Distru API
Stay Up To Date
To stay up to date with the latest breaking changes to the Distru public API, please sign up for our email list.
Overview
Distru's public API allows you to easily access and manipulate your data in our system automatically.
- Integrate your supply chain with the rest of your business Build your own custom connectors that support your most important workflows.
- Extend your reports Take data from Distru and pipe it into other systems for a unified view of your business.
- Maximize your efficiency Automate tasks based on changes in your distribution, manufacturing, and sales.
Base URL
All API requests should be made to the base URL: https://app.distru.com
Getting Started
To integrate with Distru, you'll need to contact a representative that will can enable your account's API access. From there, have a look at the following information on how to authenticate with Distru.
Authentication
An admin user can generate API keys in the Distru app by following these steps.
Steps:
- Log in to Distru with your admin account.
- Navigate to the Settings page from the left menu.
- Click on Distru API under the Integrations section.
- Use the Create API Key option to generate your API token.
Models
Strain
A strain as shown in Distru
{
"id": "12345",
"name": "Strain 123",
"strain_type": "INDICA"
}
| Property | Description | Type | Required |
|---|---|---|---|
| id | Unique ID for this strain | string | false |
| name | Name of the strain | string | false |
| strain_type | The type of strain | string | false |
StockAdjustments
A collection of Stock Adjustments
| Property | Description | Type | Required |
|---|
Product
A product as shown in Distru
{
"brand": {
"name": "Brand 123"
},
"category": {
"id": "89c8323f-aaaa-45v3-88f9-64009d68h3n8",
"name": "Super Dank Buds"
},
"external_name": "Blue Dream Preroll",
"id": "02c88a3f-d759-4973-88f9-60049d682524",
"images": [
{
"id": "12345",
"name": "image.jpg",
"url": "https://example.com/image.jpg"
}
],
"is_active": true,
"msrp": 100.1,
"name": "Blue Dream Preroll 1G",
"sku": "BDP-1G",
"unit_price": 1.5,
"unit_type": {
"name": "Gram"
},
"units_per_case": 6
}
| Property | Description | Type | Required |
|---|---|---|---|
| brand | A brand as shown in Distru | Brand | false |
| category | A product category as shown in Distru | ProductCategory | false |
| company | A company as shown in Distru | Company | false |
| custom_data | The custom data for this product | array(CustomField) | false |
| deleted_at | The datetime of deletion if the product was deleted | string | false |
| description | The description of this product | string | false |
| description_markdown | The description of this product in markdown format | string | false |
| external_name | Customer-facing name for DistruCommerce menus and Order Tracker | string | false |
| id | Unique ID for this product | string | false |
| images | The images associated with the product | array(Image) | false |
| is_active | Is this product active? | boolean | false |
| msrp | The MSRP of the product | number | false |
| name | Human readable name for this product | string | false |
| sku | The SKU configured for the product | string | false |
| strain | A strain as shown in Distru | Strain | false |
| subcategory | A product subcategory as shown in Distru | ProductSubcategory | false |
| unit_cost | The cost (or purchase price) of the product per unit. | number | false |
| unit_net_weight | The net weight of the product per unit | number | false |
| unit_net_weight_and_serving_size_unit_type_id | A unit type as shown in Distru | UnitType | false |
| unit_price | The price of one unit of this product | number | false |
| unit_serving_size | The serving size of the product per unit | number | false |
| unit_type | A unit type as shown in Distru | UnitType | false |
| units_per_case | The number of units of this product that come in one case, if any | number | false |
| updated_datetime | The datetime this product was last updated at | string | false |
AdditionalCost
An additional cost for an assembly as shown in Distru
| Property | Description | Type | Required |
|---|---|---|---|
| cost_per_unit | The cost per unit of the additional cost | number | false |
| description | The description of the additional cost | string | false |
| name | The name of the additional cost | string | false |
| quantity | The quantity of the additional cost | number | false |
| total_cost_actual | The total actual cost of the additional cost | number | false |
| total_cost_default | The total default cost (from the configured cost type) of the additional cost | number | false |
| unit_type | A unit type as shown in Distru | UnitType | false |
Products
A collection of Products
| Property | Description | Type | Required |
|---|
CompanyGroup
A company group as shown in Distru
{
"id": "12345",
"name": "Group 123"
}
| Property | Description | Type | Required |
|---|---|---|---|
| id | Unique ID for this company group | string | false |
| name | Name of the company group | string | false |
Assembly
An assembly as shown in Distru
| Property | Description | Type | Required |
|---|---|---|---|
| assembly_number | The assembly number for this assembly | string | false |
| completion_datetime | The datetime this assembly was completed at | string | false |
| compliance_type | The compliance type for this assembly. Options include METRC, BIOTRACK or NONE | string | false |
| creation_source | The creation source for this assembly | string | false |
| custom_data | The custom data for this assembly | array(CustomField) | false |
| description | The description for this assembly | string | false |
| estimated_start_date | The datetime this assembly is expected to start | string | false |
| estimated_work_hours | The estimated work hours for this assembly | integer | false |
| estimated_work_minutes | The estimated work minutes for this assembly | integer | false |
| fulfilled | True if all assembly inputs have been fulfilled with batches or packages, false otherwise. | boolean | false |
| id | Unique ID for this assembly | string | false |
| is_metrc_processing_job | True if this assembly is associated with a Metrc processing job, false otherwise | boolean | false |
| license | The license number for this assembly | string | false |
| outputs | The outputs for this assembly | array(AssemblyOutput) | false |
| owner_id | The ID of the user that owns this assembly | string | false |
| status | The status of this assembly | string | false |
OrderItemsRequest
A collection of Order item params
| Property | Description | Type | Required |
|---|
Locations
A collection of Locations
| Property | Description | Type | Required |
|---|
Charge
A line representing a Tax, Discount, or Charge added to an order
| Property | Description | Type | Required |
|---|---|---|---|
| id | Unique ID for this charge | string | false |
| name | The name for this charge | string | false |
| percent | The percent to charge for this line if it is a percentage | number | false |
| price | The price of this line if it is a flat charge | number | false |
| type | What type of additional line is this | array(any) | false |
| unit_type | Determines if this line is tracked as a percentage or a flat charge | array(any) | false |
| tax.id | Unique ID for this Tax | string | false |
| tax.name | The name of this tax | string | false |
| tax.percent | The amount of tax levied | string | false |
Strains
A collection of Strains. Note: This endpoint returns eventually consistent data, with changes taking up to 1 second to propagate in responses.
| Property | Description | Type | Required |
|---|
Role
A user role as shown in Distru
{
"id": "12345",
"name": "Admin"
}
| Property | Description | Type | Required |
|---|---|---|---|
| id | Unique ID for this role | string | false |
| name | Name of the role | string | false |
OrderTransferTemplateTransporterInfoRequest
A Metrc-specific Order transfer template transporter info
| Property | Description | Type | Required |
|---|---|---|---|
| driver_license_number | The driver's license number | string | false |
| driver_name | The driver's name | string | false |
| driver_occupational_license_number | The driver's occupational license number | string | false |
| driver_phone_number | The driver's phone number | string | false |
| estimated_arrival_datetime | The estimated arrival datetime (ISO 8601 format) | string | false |
| estimated_departure_datetime | The estimated departure datetime (ISO 8601 format) | string | false |
| transporter_license_number | The transporter's license number | string | false |
| vehicle_license_plate_number | The vehicle's license plate number | string | false |
| vehicle_make | The vehicle's make | string | false |
| vehicle_model | The vehicle's model | string | false |
InvoiceItemsRequest
A collection of invoice item params
| Property | Description | Type | Required |
|---|
InvoiceItem
A invoice line item as shown in Distru
| Property | Description | Type | Required |
|---|---|---|---|
| batch | A batch for a product as shown in Distru | Batch | false |
| cost_per_unit | The cost per unit of this invoice item. | number | false |
| cost_per_unit_default | The default cost per unit (from the configured product unit cost) of this invoice item. | number | false |
| id | Unique ID for this invoice item | string | false |
| package | A package as shown in Distru | Package | false |
| price | Price per unit of this invoice item | number | false |
| product | A product as shown in Distru | Product | false |
| quantity | Quantity used on this invoice item | number | false |
| returned_quantity | Quantity returned on this invoice item. This is the sum of all return items associated with this invoice item allocated proportionally based on the quantity |
of the invoice item relative to its associated order item. For example, if an invoice item with a quantity of 1 has an order item with a quantity of 2, and a return item with a quantity of 2, the returned_quantity would be 1, calculated as (1 ÷ 2) × 2. |number|false| |total_cost_actual|Total cost of the non-returned quantity in this order item, in other words, this is the total cost of order_item.quantity minus order_item.returned quantity. The cost is allocated proportionally based on the quantity of the invoice item relative to its associated order item. For example, if an invoice item with a quantity of 1 has an order item with a quantity of 2 and a total cost of $10, the total_cost_actual would be $5, calculated as (1 ÷ 2) × $10. |number|false| |total_cost_default|Default cost of the non-returned quantity in this order item, in other words, this is the default cost of order_item.quantity minus order_item.returned quantity. The cost is allocated proportionally based on the quantity of the invoice item relative to its associated order item. For example, if an invoice item with a quantity of 1 has an order item with a quantity of 2 and a total cost of $10, the total_cost_default would be $5, calculated as (1 ÷ 2) × $10. |number|false|
RelationshipType
A relationship type as shown in Distru
{
"id": "12345",
"name": "Supplier"
}
| Property | Description | Type | Required |
|---|---|---|---|
| id | Unique ID for this relationship type | string | false |
| name | Name of the relationship type | string | false |
OrderItemRequest
Order item params
| Property | Description | Type | Required |
|---|---|---|---|
| batch_id | The ID of the batch (if the product is batch-tracked) | string | false |
| id | Unique ID for this order item. If it exists, an update will be performed; otherwise, it will be used as the ID of a new order item record | string | false |
| is_sample | True if this order is a sample | boolean | false |
| package_id | The ID of the package (if the product is package-tracked) | string | false |
| price_base | Price per unit of this order item (prior to price tier items being applied) | number | true |
| product_id | The ID of the product (if the product is product-tracked) | string | false |
| quantity | Quantity used on this order item | number | true |
Batch
A batch for a product as shown in Distru
| Property | Description | Type | Required |
|---|---|---|---|
| id | Unique ID for this batch | string | false |
| name | Human readable name for this batch | string | false |
TestResults
A collection of Test Results
| Property | Description | Type | Required |
|---|
PurchaseChargesRequest
A collection of Purchase charge params
| Property | Description | Type | Required |
|---|
PurchaseItemRequest
Purchase item params. Must provide either batch_id or product_id. If batch_id is provided, product_id will be auto-filled. If product_id is provided for a product-tracked item, batch_id will be auto-filled.
| Property | Description | Type | Required |
|---|---|---|---|
| batch_id | The ID of the batch | string | false |
| id | Unique ID for this order item. If it exists, an update will be performed; otherwise, it will be used as the ID of a new purchase order item record | string | false |
| price | Price per unit of the inventory being received on this purchase item | number | true |
| product_id | The ID of the product | string | false |
| quantity | Quantity received in this purchase item | number | true |
OrderTransferTemplateTransporterInfosRequest
A collection of Metrc-specific Order transfer template transporter info params
| Property | Description | Type | Required |
|---|
InvoiceChargesRequest
A collection of Invoice charge params
| Property | Description | Type | Required |
|---|
FileAttachment
A file attachment
| Property | Description | Type | Required |
|---|
PurchaseOrderItem
An order line item as shown in Distru
| Property | Description | Type | Required |
|---|---|---|---|
| batch | A batch for a product as shown in Distru | Batch | false |
| id | Unique ID for this order item | string | false |
| package | A package as shown in Distru | Package | false |
| price | Price per unit of this order item (with discounts applied) | number | false |
| price_base | Price per unit of this order item | number | false |
| product | A product as shown in Distru | Product | false |
| quantity | Quantity used on this order item | number | false |
| received_quantity | Quantity received on this order item. Less than or equal to the quantity field | number | false |
PageWithSize
Pagination information for a request
{
"number": 1,
"size": 100
}
| Property | Description | Type | Required |
|---|---|---|---|
| number | Page number | integer | true |
| size | Amount of records per page | integer | true |
InvoicePayment
An invoice payment as shown in Distru
{
"amount": 100.0,
"description": "Payment for invoice 12345",
"id": "12345",
"method_id": "12345",
"payment_datetime": "2024-12-12 20:26:19.297537",
"payment_number": "12345",
"quickbooks_deposit_account_id": "12345"
}
| Property | Description | Type | Required |
|---|---|---|---|
| amount | The amount of the payment | number | false |
| descriptiontime | The description of this payment | string | false |
| id | Unique ID for this invoice payment | string | false |
| invoice_id | The ID of the invoice this payment is for | string | false |
| method_id | The ID of the payment method used for this payment | string | false |
| payment_date | The date of this payment | string | false |
| payment_number | The payment number for this payment | string | false |
| quickbooks_deposit_account_id | The id of the Quickbooks deposit account used for this payment | string | false |
InvoiceItemRequest
Invoice item params
| Property | Description | Type | Required |
|---|---|---|---|
| id | Unique ID for this order item. If it exists, an update will be performed; otherwise, it will be used as the ID of a new invoice item record | string | false |
| order_item_id | The ID of order item with which this invoice item is associated | string | false |
| quantity | Quantity used on this order item | number | true |
CustomField
A custom field as shown in Distru
{
"id": "12345",
"name": "Custom Field 1",
"value": "Custom Field Value 1"
}
| Property | Description | Type | Required |
|---|---|---|---|
| id | Unique ID for this custom field | string | false |
| name | The name of this custom field | string | false |
| value | The value of the custom field in the context of the object it's associated with | string | false |
Image
An image as shown in Distru
{
"id": "12345",
"name": "image.jpg",
"rank": 0,
"url": "https://example.com/image.jpg"
}
| Property | Description | Type | Required |
|---|---|---|---|
| id | Unique ID for this image | string | false |
| name | Name of the file for this image | string | false |
| rank | The rank of this image in the list of images for the product | integer | false |
| url | URL to the image file | string | false |
CustomFieldDefinition
A custom field definition
| Property | Description | Type | Required |
|---|---|---|---|
| description | Description of the custom field | string | false |
| field_options | Field options | array(any) | false |
| field_type | Field type | string | false |
| filterable | Whether the field is filterable | boolean | false |
| id | Custom field ID | string | false |
| name | Name of the custom field | string | false |
| parent_object | Parent object attached to the field | string | false |
User
Information about a user in Distru
{
"banned": false,
"email": "jeanb@zorgindustries.com",
"full_name": "Jean-Baptiste Emanuel Zorg",
"id": "12345",
"role": "Admin"
}
| Property | Description | Type | Required |
|---|---|---|---|
| banned | Is this user banned by Distru? | boolean | false |
| deleted_at | The datetime of deletion if the user was deleted | string | false |
| The email address of this user | string | false | |
| full_name | The full name of this user | string | false |
| id | Unique ID for this user | string | false |
| role | A user role as shown in Distru | Role | false |
AdditionalTestResult
An additional test result object for a test result as shown in Distru
| Property | Description | Type | Required |
|---|---|---|---|
| chlorfenapyr_ug_per_g | Pesticide | string | false |
| dimethoxyethane_ug_per_g | Solvent | string | false |
| etofenprox_ug_per_g | Pesticide | string | false |
| formic_acid_ug_per_g | Other | string | false |
| cbda_percentage | Cannabinoid | string | false |
| methylcyclohexane_ug_per_g | Solvent | string | false |
| cadmium_ug_per_g | Heavy Metal | string | false |
| cbl_percentage | Cannabinoid | string | false |
| daminozide_ug_per_g | Pesticide | string | false |
| other_pesticides_ug_per_g | Pesticide | string | false |
| diazinon_ug_per_g | Pesticide | string | false |
| cannabinoids_mg_per_unit_total | Cannabinoid | string | false |
| methiocarb_ug_per_g | Pesticide | string | false |
| water_activity_aw | Water Activity | string | false |
| cbt_percentage | Cannabinoid | string | false |
| camphor_mg_per_unit | Terpene | string | false |
| hexythiazox_ug_per_g | Pesticide | string | false |
| linalool_mg_per_unit | Terpene | string | false |
| ethoprophos_ug_per_g | Pesticide | string | false |
| other_microbials_cfu_per_g | Microbial | string | false |
| cbt_mg_per_unit | Cannabinoid | string | false |
| ethylene_oxide_ug_per_g | Solvent | string | false |
| thcva_percentage | Cannabinoid | string | false |
| carbaryl_ug_per_g | Pesticide | string | false |
| acetone_ug_per_g | Solvent | string | false |
| ocimene_percentage | Terpene | string | false |
| nickel_ug_per_g | Heavy Metal | string | false |
| imidacloprid_ug_per_g | Pesticide | string | false |
| acetic_acid_ug_per_g | Other | string | false |
| beta_humulene_mg_per_unit | Terpene | string | false |
| cypermethrin_ug_per_g | Pesticide | string | false |
| pyrethrins_pyrethrin_ii_ug_per_g | Pesticide | string | false |
| camphene_percentage | Terpene | string | false |
| methoxybenzene_ug_per_g | Solvent | string | false |
| limonene_percentage | Terpene | string | false |
| nerolidol_percentage | Terpene | string | false |
| fenchol_percentage | Terpene | string | false |
| flonicamid_ug_per_g | Pesticide | string | false |
| alpha_cyfluthrin_ug_per_g | Pesticide | string | false |
| spinetoram_l_ug_per_g | Pesticide | string | false |
| clothianidin_ug_per_g | Pesticide | string | false |
| sabinene_percentage | Terpene | string | false |
| chlormequat_chloride_ug_per_g | Other | string | false |
| aflatoxins_ug_per_kg | Mycotoxin | string | false |
| ethanol_ug_per_g | Solvent | string | false |
| permethrin_trans_ug_per_g | Pesticide | string | false |
| ethyl_acetate_ug_per_g | Solvent | string | false |
| salmonella_cfu_per_g | Microbial | string | false |
| valencene_percentage | Terpene | string | false |
| beta_pinene_percentage | Terpene | string | false |
| caryophyllene_oxide_mg_per_unit | Terpene | string | false |
| pyridaben_ug_per_g | Pesticide | string | false |
| beta_caryophyllene_percentage | Terpene | string | false |
| oxamyl_ug_per_g | Pesticide | string | false |
| methyl_butanol_ug_per_g | Solvent | string | false |
| fenpyroximate_ug_per_g | Pesticide | string | false |
| delta_8_thc_mg_per_unit | Cannabinoid | string | false |
| cymene_percentage | Terpene | string | false |
| caryophyllene_oxide_percentage | Terpene | string | false |
| bifenthrin_ug_per_g | Pesticide | string | false |
| methomyl_ug_per_g | Pesticide | string | false |
| isopropyl_acetate_ug_per_g | Solvent | string | false |
| alpha_myrcene_mg_per_unit | Terpene | string | false |
| beta_cypermethrin_ug_per_g | Pesticide | string | false |
| terpinolene_percentage | Terpene | string | false |
| tert_butyl_methyl_ether_ug_per_g | Solvent | string | false |
| acetic_acid_percentage | Other | string | false |
| borneol_mg_per_unit | Terpene | string | false |
| mercury_ug_per_g | Heavy Metal | string | false |
| aflatoxin_g1_ug_per_kg | Mycotoxin | string | false |
| linalool_percentage | Terpene | string | false |
| pyrethrins_ug_per_g | Pesticide | string | false |
| beta_myrcene_mg_per_unit | Terpene | string | false |
| terpenes_percentage_total | Terpene | string | false |
| aflatoxin_b1_ug_per_kg | Mycotoxin | string | false |
| dimethyl_sulfoxide_ug_per_g | Solvent | string | false |
| naled_ug_per_g | Pesticide | string | false |
| spirotetramat_ug_per_g | Pesticide | string | false |
| boscalid_ug_per_g | Pesticide | string | false |
| geraniol_percentage | Terpene | string | false |
| cbc_mg_per_unit | Cannabinoid | string | false |
| butane_ug_per_g | Solvent | string | false |
| cumene_ug_per_g | Solvent | string | false |
| dimethomorph_ug_per_g | Pesticide | string | false |
| piperonylbutoxide_ug_per_g | Pesticide | string | false |
| moisture_percentage | Moisture | string | false |
| cbn_percentage | Cannabinoid | string | false |
| prallethrin_trans_ug_per_g | Pesticide | string | false |
| aspergillus_cfu_per_g | Microbial | string | false |
| lead_ug_per_g | Heavy Metal | string | false |
| ancymidol_ug_per_g | Pesticide | string | false |
| acephate_ug_per_g | Pesticide | string | false |
| dimethylformamide_ug_per_g | Solvent | string | false |
| candida_albicans_cfu_per_g | Microbial | string | false |
| nitromethane_ug_per_g | Solvent | string | false |
| pyrethrins_cinerin_i_ug_per_g | Pesticide | string | false |
| mevinphos_ii_ug_per_g | Pesticide | string | false |
| kresoxim_methyl_ug_per_g | Pesticide | string | false |
| spinetoram_j_ug_per_g | Pesticide | string | false |
| cyclohexane_ug_per_g | Solvent | string | false |
| alpha_phellandrene_percentage | Terpene | string | false |
| chloroform_ug_per_g | Solvent | string | false |
| beta_cyfluthrin_ug_per_g | Pesticide | string | false |
| borneol_percentage | Terpene | string | false |
| propyl_acetate_ug_per_g | Solvent | string | false |
| cyfluthrin_ug_per_g | Pesticide | string | false |
| fenhexamid_ug_per_g | Pesticide | string | false |
| cbdv_mg_per_unit | Cannabinoid | string | false |
| alpha_humulene_percentage | Terpene | string | false |
| pentachloronitrobenzene_ug_per_g | Pesticide | string | false |
| xylene_ug_per_g_total | Solvent | string | false |
| tebuconazole_ug_per_g | Pesticide | string | false |
| propiconazole_cis_ug_per_g | Pesticide | string | false |
| butanol_ug_per_g | Solvent | string | false |
| fenoxycarb_ug_per_g | Pesticide | string | false |
| antimony_ug_per_g | Heavy Metal | string | false |
| alpha_cypermethrin_ug_per_g | Pesticide | string | false |
| chromium_ug_per_g | Heavy Metal | string | false |
| zinc_ug_per_g | Heavy Metal | string | false |
| heptane_ug_per_g | Solvent | string | false |
| spiromesifen_ug_per_g | Pesticide | string | false |
| thca_percentage | Cannabinoid | string | false |
| spiroxamine_ug_per_g | Pesticide | string | false |
| nerolidol_mg_per_unit | Terpene | string | false |
| tetrahydrofuran_ug_per_g | Solvent | string | false |
| chlordane_cis_ug_per_g | Pesticide | string | false |
| propanol_ug_per_g | Solvent | string | false |
| yeast_cfu_per_g | Microbial | string | false |
| beta_caryophyllene_mg_per_unit | Terpene | string | false |
| enterobacteriacaea_cfu_per_g | Microbial | string | false |
| dimethoate_ug_per_g | Pesticide | string | false |
| pulegone_percentage | Terpene | string | false |
| vitamin_e_acetate_percentage | Other | string | false |
| pentanol_ug_per_g | Solvent | string | false |
| formic_acid_percentage | Other | string | false |
| isopulegol_percentage | Terpene | string | false |
| other_terpenes_mg_per_unit | Terpene | string | false |
| gamma_terpinene_percentage | Terpene | string | false |
| spinosad_d_ug_per_g | Pesticide | string | false |
| l_monocytogenes_cfu_per_g | Microbial | string | false |
| thiabendazole_ug_per_g | Pesticide | string | false |
| formamide_ug_per_g | Pesticide | string | false |
| ethyl_formate_percentage | Other | string | false |
| ethylene_glycol_ug_per_g | Other | string | false |
| methyl_propanol_ug_per_g | Solvent | string | false |
| eucalyptol_percentage | Terpene | string | false |
| alpha_myrcene_percentage | Terpene | string | false |
| thca_mg_per_unit | Cannabinoid | string | false |
| cbg_percentage | Cannabinoid | string | false |
| ethylene_glycol_percentage | Other | string | false |
| copper_ug_per_g | Heavy Metal | string | false |
| mold_cfu_per_g | Microbial | string | false |
| phytol_mg_per_unit | Terpene | string | false |
| thcv_percentage | Cannabinoid | string | false |
| phosmet_ug_per_g | Pesticide | string | false |
| trifloxystrobin_ug_per_g | Pesticide | string | false |
| dichloromethane_ug_per_g | Solvent | string | false |
| thcv_mg_per_unit | Cannabinoid | string | false |
| delta_8_thc_percentage | Cannabinoid | string | false |
| fenchol_mg_per_unit | Terpene | string | false |
| bifenazate_ug_per_g | Pesticide | string | false |
| cannabinoids_percentage_total | Cannabinoid | string | false |
| eucalyptol_mg_per_unit | Terpene | string | false |
| cbdv_percentage | Cannabinoid | string | false |
| dichloroethane_ug_per_g | Solvent | string | false |
| propiconazole_ug_per_g | Pesticide | string | false |
| paclobutrazol_ug_per_g | Pesticide | string | false |
| cbl_mg_per_unit | Cannabinoid | string | false |
| delta_3_carene_percentage | Terpene | string | false |
| myclobutanil_ug_per_g | Pesticide | string | false |
| dichlorvos_ug_per_g | Pesticide | string | false |
| pulegone_mg_per_unit | Terpene | string | false |
| butyl_acetate_ug_per_g | Solvent | string | false |
| aflatoxin_b2_ug_per_kg | Mycotoxin | string | false |
| isopulegol_mg_per_unit | Terpene | string | false |
| trichloroethylene_ug_per_g | Solvent | string | false |
| sulfolane_ug_per_g | Solvent | string | false |
| benzene_ug_per_g | Solvent | string | false |
| terpineol_mg_per_unit | Terpene | string | false |
| guaiol_percentage | Terpene | string | false |
| acetonitrile_ug_per_g | Solvent | string | false |
| chlordane_trans_ug_per_g | Pesticide | string | false |
| camphene_mg_per_unit | Terpene | string | false |
| alpha_humulene_mg_per_unit | Terpene | string | false |
| isopropanol_ug_per_g | Solvent | string | false |
| spinetoram_ug_per_g | Pesticide | string | false |
| chlorpyrifos_ug_per_g | Pesticide | string | false |
| permethrin_cis_ug_per_g | Pesticide | string | false |
| methyl_butyl_ketone_ug_per_g | Solvent | string | false |
| aspergillus_terreus_cfu_per_g | Microbial | string | false |
| aflatoxin_g2_ug_per_kg | Mycotoxin | string | false |
| metalaxyl_ug_per_g | Pesticide | string | false |
| alpha_terpinene_mg_per_unit | Terpene | string | false |
| spiroxamine_b_ug_per_g | Pesticide | string | false |
| dimethomorph_e_ug_per_g | Pesticide | string | false |
| tetralin_ug_per_g | Solvent | string | false |
| n_methylpyrrolidone_ug_per_g | Solvent | string | false |
| ethyl_formate_ug_per_g | Other | string | false |
| dinotefuran_ug_per_g | Pesticide | string | false |
| methanol_ug_per_g | Solvent | string | false |
| dimethylacetamide_ug_per_g | Solvent | string | false |
| fipronil_ug_per_g | Pesticide | string | false |
| flurprimidol_ug_per_g | Pesticide | string | false |
| dimethomorph_z_ug_per_g | Pesticide | string | false |
| m_and_p_xylene_ug_per_g | Solvent | string | false |
| sand_and_soil_and_cinders_and_dirt_percentage | Other | string | false |
| terpineol_percentage | Terpene | string | false |
| imazalil_ug_per_g | Pesticide | string | false |
| filth_and_foreign_material_percentage | Other | string | false |
| ethyl_ether_ug_per_g | Solvent | string | false |
| alpha_bisabolol_percentage | Terpene | string | false |
| acequinocyl_ug_per_g | Pesticide | string | false |
| cbda_mg_per_unit | Cannabinoid | string | false |
| permethrin_ug_per_g | Pesticide | string | false |
| cymene_mg_per_unit | Terpene | string | false |
| azoxystrobin_ug_per_g | Pesticide | string | false |
| malathion_ug_per_g | Pesticide | string | false |
| gamma_terpinene_mg_per_unit | Terpene | string | false |
| methyl_parathion_ug_per_g | Pesticide | string | false |
| clofentezine_ug_per_g | Pesticide | string | false |
| alpha_pinene_percentage | Terpene | string | false |
| terpenes_mg_per_unit_total | Terpene | string | false |
| alpha_terpinene_percentage | Terpene | string | false |
| coumaphos_ug_per_g | Pesticide | string | false |
| acetamiprid_ug_per_g | Pesticide | string | false |
| ocimene_mg_per_unit | Terpene | string | false |
| ethephon_ug_per_g | Pesticide | string | false |
| geraniol_mg_per_unit | Terpene | string | false |
| cbc_percentage | Cannabinoid | string | false |
| pyriproxyfen_ug_per_g | Pesticide | string | false |
| cbga_mg_per_unit | Cannabinoid | string | false |
| cbga_percentage | Cannabinoid | string | false |
| phytol_percentage | Terpene | string | false |
| chlordane_ug_per_g | Pesticide | string | false |
| beta_humulene_percentage | Terpene | string | false |
| terpinolene_mg_per_unit | Terpene | string | false |
| thcva_mg_per_unit | Cannabinoid | string | false |
| farnesene_mg_per_unit | Terpene | string | false |
| camphor_percentage | Terpene | string | false |
| lambda_cyhalothrin_ug_per_g | Pesticide | string | false |
| e_coli_cfu_per_g | Microbial | string | false |
| alpha_bisabolol_mg_per_unit | Terpene | string | false |
| valencene_mg_per_unit | Terpene | string | false |
| methoxyethanol_ug_per_g | Solvent | string | false |
| isobutyl_acetate_ug_per_g | Solvent | string | false |
| farnesene_percentage | Terpene | string | false |
| propiconazole_trans_ug_per_g | Pesticide | string | false |
| dioxane_ug_per_g | Solvent | string | false |
| chlorobenzene_ug_per_g | Solvent | string | false |
| alpha_phellandrene_mg_per_unit | Terpene | string | false |
| cbg_mg_per_unit | Cannabinoid | string | false |
| other_heavy_metals_ug_per_g | Heavy Metal | string | false |
| diuron_ug_per_g | Pesticide | string | false |
| delta_3_carene_mg_per_unit | Terpene | string | false |
| ethoxyethanol_ug_per_g | Solvent | string | false |
| aldicarb_ug_per_g | Pesticide | string | false |
| aspergillus_fumigatus_cfu_per_g | Microbial | string | false |
| captan_ug_per_g | Pesticide | string | false |
| chlorantraniliprole_ug_per_g | Pesticide | string | false |
| propane_ug_per_g | Solvent | string | false |
| hexane_ug_per_g | Solvent | string | false |
| other_terpenes_percentage | Terpene | string | false |
| pyrethrins_pyrethrin_i_ug_per_g | Pesticide | string | false |
| prallethrin_cis_ug_per_g | Pesticide | string | false |
| chlormequat_chloride_percentage | Other | string | false |
| spinosad_a_ug_per_g | Pesticide | string | false |
| pyrethrins_jasmolin_ii_ug_per_g | Pesticide | string | false |
| spiroxamine_a_ug_per_g | Pesticide | string | false |
| guaiol_mg_per_unit | Terpene | string | false |
| methyl_acetate_ug_per_g | Solvent | string | false |
| aspergillus_flavus_cfu_per_g | Microbial | string | false |
| etoxazole_ug_per_g | Pesticide | string | false |
| methylisobutyl_ketone_ug_per_g | Solvent | string | false |
| vitamin_e_acetate_ug_per_g | Other | string | false |
| pyrethrins_cinerin_ii_ug_per_g | Pesticide | string | false |
| cbn_mg_per_unit | Cannabinoid | string | false |
| prallethrin_ug_per_g | Pesticide | string | false |
| mgk_264_ug_per_g | Pesticide | string | false |
| arsenic_ug_per_g | Heavy Metal | string | false |
| limonene_mg_per_unit | Terpene | string | false |
| alpha_pinene_mg_per_unit | Terpene | string | false |
| mevinphos_ug_per_g | Pesticide | string | false |
| pyridine_ug_per_g | Solvent | string | false |
| thiamethoxam_ug_per_g | Pesticide | string | false |
| toluene_ug_per_g | Solvent | string | false |
| spinosad_ug_per_g | Pesticide | string | false |
| pentane_ug_per_g | Solvent | string | false |
| propoxur_ug_per_g | Pesticide | string | false |
| ochratoxin_a_ug_per_kg | Mycotoxin | string | false |
| fludioxonil_ug_per_g | Pesticide | string | false |
| beta_myrcene_percentage | Terpene | string | false |
| thiacloprid_ug_per_g | Pesticide | string | false |
| aspergillus_niger_cfu_per_g | Microbial | string | false |
| mevinphos_i_ug_per_g | Pesticide | string | false |
| sabinene_mg_per_unit | Terpene | string | false |
| other_solvents_ug_per_g | Solvent | string | false |
| carbofuran_ug_per_g | Pesticide | string | false |
| beta_pinene_mg_per_unit | Terpene | string | false |
| other_mycotoxins_ug_per_kg | Mycotoxin | string | false |
| pyrethrins_jasmolin_i_ug_per_g | Pesticide | string | false |
| methyl_ethyl_ketone_ug_per_g | Solvent | string | false |
OrderChargeRequest
Order charge params
| Property | Description | Type | Required |
|---|---|---|---|
| id | Unique ID for this order charge. If it exists, an update will be performed; otherwise, it will be used as the ID of a new order charge record | string | false |
| name | The ID of the batch (if the product is batch-tracked) | string | false |
| percent | The ID of the package (if the product is package-tracked) | number | false |
| price | The ID of the product (if the product is product-tracked) | number | false |
| type | What type of additional line is this | string | true |
| unit_type | Determines if this line is tracked as a percentage or a flat charge | string | true |
PurchasePayment
A purchase payment as shown in Distru
{
"amount": 100.0,
"description": "Payment for invoice 12345",
"id": "12345",
"method_id": "12345",
"payment_datetime": "2024-12-12 20:26:19.297537",
"payment_number": "12345",
"quickbooks_deposit_account_id": "12345"
}
| Property | Description | Type | Required |
|---|---|---|---|
| amount | The amount of the payment | number | false |
| descriptiontime | The description of this payment | string | false |
| id | Unique ID for this purchase payment | string | false |
| method_id | The ID of the payment method used for this payment | string | false |
| payment_date | The date of this payment | string | false |
| payment_number | The payment number for this payment | string | false |
| purchase_id | The ID of the purchase this payment is for | string | false |
| quickbooks_deposit_account_id | The id of the Quickbooks deposit account used for this payment | string | false |
Packages
A collection of Packages
| Property | Description | Type | Required |
|---|
StockAdjustment
A stock adjustment as shown in Distru
{
"batch_id": "12345",
"completion_datetime": "2024-12-12 20:26:19.297537",
"compliance_quantity": 10,
"compliance_unit_type": {
"id": "123",
"name": "Gram"
},
"description": "The description for this adjustment",
"id": "12345",
"license_id": "12345",
"location_id": "12345",
"owner_id": "12345",
"package_id": "12345",
"product_id": "12345",
"quantity": 10,
"reason": "Waste",
"total_cost": 100,
"unit_type": {
"id": "123",
"name": "Gram"
}
}
| Property | Description | Type | Required |
|---|---|---|---|
| batch_id | The ID of this adjustment's batch. Null if this adjustment is not associated with a batch-tracked product | string | false |
| completion_datetime | The datetime this adjustment was completed at | datetime | false |
| compliance_quantity | The quantity of this adjustment expressed in it's package's unit type. Null if this adjustment is not associated with a package-tracked product. | number | false |
| compliance_unit_type | A unit type as shown in Distru | UnitType | false |
| description | The description for this adjustment | string | false |
| id | Unique ID for this stock adjustment | string | false |
| license_id | ID of the license that this adjustment is associated with | string | false |
| location_id | ID of the location that this adjustment is associated with | string | false |
| owner_id | The ID of the user that owns this adjustment | string | false |
| package_id | The ID of this adjustment's package. Null if this adjustment is not associated with a package-tracked product | string | false |
| product_id | The ID of this adjustment's product. Populated regardless of the product's inventory tracking method. | string | false |
| quantity | The quantity of the adjustment | number | false |
| reason | The reason for this adjustment | string | false |
| total_cost | The total cost of this adjustment | number | false |
| unit_type | A unit type as shown in Distru | UnitType | false |
Batches
A collection of Batches
| Property | Description | Type | Required |
|---|
Inventory
{
"active": "500.000000000",
"available": "400.000000000",
"batch_number": "1234",
"location_id": "1764da45-c1be-425c-9b31-b860cdb93e98",
"product_id": "67ae9080-8dc2-4ab7-9704-19673f4d9f21",
"reserved": "100.000000000"
}
| Property | Description | Type | Required |
|---|---|---|---|
| active | Active quantity | number | true |
| available | Available quantity (active - reserved) | number | true |
| batch_number | The batch number of the batch or the package | string | false |
| cost_per_unit_actual | The cost per unit of the inventory. Note: This is calculated by dividing the total cost by the active quantity. | number | false |
| cost_per_unit_default | The cost per unit of the inventory. Note: This is calculated by dividing the total default cost by the active quantity. | number | false |
| location_id | ID of the location | string | false |
| product_id | ID of the product | string | true |
| reserved | Reserved quantity | number | true |
| total_cost_actual | The aggregated total cost of the inventory's active quantity | number | false |
| total_cost_default | The aggregated total default cost of the inventory's active quantity | number | false |
ProductPosMappingsResponse
| Property | Description | Type | Required |
|---|---|---|---|
| data | List of POS mappings | array(ProductPosMapping) | false |
Order
A sales order as shown in Distru. Ordered by order date
{
"billing_location": {
"address": "123 Compton Street, CA, USA, 12345",
"id": "d06a5135-dccf-4d62-a922-804190213c10",
"name": "Warehouse 1"
},
"charges": [
{
"id": "8h7512d2-g4h6-jj89-92h7-12f9ed9ls8f5",
"name": "Friends and Family",
"percent": -10,
"type": "DISCOUNT",
"unit_type": "PERCENT"
},
{
"id": "duy67x9r-0d4k-mmk5-8u9u-l3k8ed9lj900",
"name": "Excise Tax",
"percent": 27,
"tax": {
"id": "9876",
"name": "Excise Tax - CA 27%",
"percent": 27.0
},
"type": "TAX",
"unit_type": "PERCENT"
},
{
"id": "ko38h9ju-ndn7-76h8-jio9-j98yhd93h6fh",
"name": "Membership Fee",
"price": 25.0,
"type": "CHARGE",
"unit_type": "PRICE"
}
],
"creator": {
"banned": false,
"email": "jeanb@zorgindustries.com",
"full_name": "Jean-Baptiste Emanuel Zorg",
"id": "3e98e590-85b6-4247-b2e9-96fc2f45802e"
},
"delivery_datetime": "2022‐07‐02T00:00:00Z",
"due_datetime": "2022‐07‐02T00:00:00Z",
"id": "193c12d2-bc68-46fa-a221-12f9ed958ef4",
"inserted_datetime": "2022‐07‐02T00:00:00Z",
"internal_notes": "Internal note example",
"items": [
{
"id": "3e98e590-85b6-4247-b2e9-96fc2f45802e",
"price": 0.006,
"price_base": 0.006,
"product": {
"id": "4ec0ac89-a382-409c-ae67-4478e7e681ac",
"name": "Crawdad Crippler - 1g - PreRoll",
"sku": "WHODAT"
},
"quantity": 786
}
],
"order_datetime": "2022‐07‐02T00:00:00Z",
"order_number": "SO-00012345",
"payment_term_name": "Net 30",
"shipping_location": {
"address": "123 Compton Street, CA, USA, 12345",
"id": "d06a5135-dccf-4d62-a922-804190213c10",
"name": "Warehouse 1"
},
"status": "PENDING",
"total": 150.23,
"updated_datetime": "2022‐07‐02T00:00:00Z"
}
| Property | Description | Type | Required |
|---|---|---|---|
| billing_location | A location as shown in Distru | Location | false |
| biotrack_id | The ID of the BioTrack manifest associated with this order | string | false |
| charges | A collection of Charges | array(Charge) | false |
| company | A company as shown in Distru | Company | false |
| creator | Information about a user in Distru | User | false |
| custom_data | A collection of CustomData | array(CustomData) | false |
| delivery_datetime | The datetime on which the order was / will be delivered | string | false |
| due_datetime | The datetime by which the order should be completed for the customer | string | false |
| id | Unique ID for this order | string | false |
| inserted_datetime | The datetime at which the order was created in Distru | string | false |
| internal_notes | Internal notes for this order | string | false |
| items | A collection of SalesOrderItems | array(SalesOrderItem) | false |
| leaflink_order_number | The LeafLink order number for this order | string | false |
| metrc_transfer_id | The ID of the Metrc transfer associated with this order | string | false |
| order_datetime | The datetime on which the order was placed | string | false |
| order_number | The order number as shown in the Distru UI | string | false |
| owner | Information about a user in Distru | User | false |
| payment_term_name | The name of the payment term applied to this order | string | false |
| shipping_location | A location as shown in Distru | Location | false |
| status | The status of this sales order | string | false |
| total | The total for this order including taxes, discounts, and all line items | number | false |
| updated_datetime | The datetime at which the order was last updated in Distru | string | false |
ProductPosMappingResponse
| Property | Description | Type | Required |
|---|---|---|---|
| data | A mapping between a Distru product and a POS product | ProductPosMapping | false |
Contacts
A collection of Contacts
| Property | Description | Type | Required |
|---|
Page
Pagination information for a request
{
"number": 1
}
| Property | Description | Type | Required |
|---|---|---|---|
| number | Page number | integer | true |
UpsertProductPosMapping
Parameters for creating or updating a POS mapping
{
"blaze_product_id": "blaze_123",
"blaze_retailer_id": "456e7890-e89b-12d3-a456-426614174000",
"product_id": "123e4567-e89b-12d3-a456-426614174000"
}
| Property | Description | Type | Required |
|---|---|---|---|
| blaze_product_id | Blaze product ID | string | false |
| blaze_retailer_id | Blaze retailer ID | string | false |
| dutchie_product_id | Dutchie product ID | integer | false |
| dutchie_retailer_id | Dutchie retailer ID | string | false |
| product_id | Distru product ID | string | true |
| treez_product_id | Treez product ID | string | false |
| treez_retailer_id | Treez retailer ID | string | false |
Purchase
A purchase order as shown in Distru. Ordered by order date
{
"charges": [
{
"id": "8h7512d2-g4h6-jj89-92h7-12f9ed9ls8f5",
"name": "Friends and Family",
"percent": -10,
"type": "DISCOUNT",
"unit_type": "PERCENT"
},
{
"id": "duy67x9r-0d4k-mmk5-8u9u-l3k8ed9lj900",
"name": "Excise Tax",
"percent": 27,
"tax": {
"id": "9876",
"name": "Excise Tax - CA 27%",
"percent": 27.0
},
"type": "Tax",
"unit_type": "PERCENT"
},
{
"id": "ko38h9ju-ndn7-76h8-jio9-j98yhd93h6fh",
"name": "Membership Fee",
"price": 25.0,
"type": "CHARGE",
"unit_type": "PRICE"
}
],
"due_datetime": "2022‐07‐02T00:00:00Z",
"id": "193c12d2-bc68-46fa-a221-12f9ed958ef4",
"inserted_datetime": "2022‐07‐02T00:00:00Z",
"items": [
{
"id": "3e98e590-85b6-4247-b2e9-96fc2f45802e",
"price": 0.006,
"product": {
"id": "4ec0ac89-a382-409c-ae67-4478e7e681ac",
"name": "Crawdad Crippler - 1g - PreRoll",
"sku": "WHODAT"
},
"quantity": 786,
"received_quantity": 786
}
],
"order_datetime": "2022‐07‐02T00:00:00Z",
"purchase_number": "PO-00012345",
"status": "Pending",
"total": 150.23,
"updated_datetime": "2022‐07‐02T00:00:00Z"
}
| Property | Description | Type | Required |
|---|---|---|---|
| charges | A collection of Charges | array(Charge) | false |
| company | A company as shown in Distru | Company | false |
| creator | Information about a user in Distru | User | false |
| custom_data | The custom data for this purchase order | array(CustomField) | false |
| due_datetime | The datetime by which the order should be completed for the customer | string | false |
| id | Unique ID for this order | string | false |
| inserted_datetime | The datetime at which the order was created in Distru | string | false |
| items | A collection of PurchaseOrderItems | array(PurchaseOrderItem) | false |
| order_datetime | The datetime on which the order was placed | string | false |
| owner | Information about a user in Distru | User | false |
| purchase_number | The purchase order number as shown in the Distru UI | string | false |
| status | The status of this purchase order | string | false |
| total | The total for this order including taxes, discounts, and all line items | number | false |
| updated_datetime | The datetime at which the order was last updated in Distru | string | false |
PaymentMethod
A payment method as shown in Distru
{
"id": "12345",
"name": "Credit Card"
}
| Property | Description | Type | Required |
|---|---|---|---|
| deleted_at | The datetime of deletion if the payment method was deleted | string | false |
| id | Unique ID for this payment method | string | false |
| name | Name of the payment method | string | false |
Package
A package as shown in Distru
| Property | Description | Type | Required |
|---|---|---|---|
| batch_number | The non-compliance batch number for this package | string | false |
| compliance_label | The compliance (e.g. Metrc) label for this package | string | false |
| id | Unique ID for this package in Distru | string | false |
| status | The status of this package | array(any) | false |
BatchFull
Extended details about a batch for a product as shown in Distru
| Property | Description | Type | Required |
|---|---|---|---|
| batch_number | The batch number for this batch | string | false |
| cost_per_unit_actual | The cost per unit of this batch | number | false |
| cost_per_unit_default | The default cost per unit (from the configured product unit cost) of this batch | number | false |
| custom_data | The custom data for this batch | array(CustomField) | false |
| deleted_at | The date and time when this batch was deleted | string | false |
| description | The description for this batch | string | false |
| expiration_date | The expiration date for this batch | string | false |
| id | Unique ID for this batch | string | false |
| manufactured_datetime | The manufactured datetime for this batch (ISO 8601 format) | string | false |
| name | Human readable name for this batch | string | false |
| owner_id | The ID of the user that owns this batch | string | false |
| product_id | The ID of the batch's product | string | false |
| total_cost_actual | The total actual cost of this batch | number | false |
| total_cost_default | The total default cost (from the configured product unit cost) of this batch | number | false |
Invoices
A collection of Invoices
| Property | Description | Type | Required |
|---|
ProductSubcategory
A product subcategory as shown in Distru
{
"id": "88c02a3f-57d9-9473-f8f9-40609d68bbh4",
"name": "High Grade Flower"
}
| Property | Description | Type | Required |
|---|---|---|---|
| id | Unique ID for this subcategory | string | false |
| name | Human readable name for this subcategory | string | false |
Orders
A collection of Orders
| Property | Description | Type | Required |
|---|
SalesOrderItem
An order line item as shown in Distru
| Property | Description | Type | Required |
|---|---|---|---|
| batch | A batch for a product as shown in Distru | Batch | false |
| cost_per_unit_actual | The cost per unit of this order item | number | false |
| id | Unique ID for this order item | string | false |
| package | A package as shown in Distru | Package | false |
| price | Price per unit of this order item | number | false |
| product | A product as shown in Distru | Product | false |
| quantity | Quantity sold on this order item | number | false |
| returned_quantity | Quantity returned on this order item | number | false |
| total_cost_actual | Total cost of the non-returned quantity in this order item, in other words, this is the total cost of order_item.quantity minus order_item.returned quantity. | number | false |
| total_cost_default | Default cost of the non-returned quantity in this order item, in other words, this is the default cost of order_item.quantity minus order_item.returned quantity. | number | false |
Assemblies
A collection of Assemblies
| Property | Description | Type | Required |
|---|
Invoice
An invoice as shown in Distru. Ordered by invoice date
{
"creator": {
"banned": false,
"email": "jeanb@zorgindustries.com",
"full_name": "Jean-Baptiste Emanuel Zorg",
"id": "12345"
},
"due_datetime": "2022‐07‐02T00:00:00Z",
"id": "193c12d2-bc68-46fa-a221-12f9ed958ef4",
"inserted_datetime": "2022‐07‐02T00:00:00Z",
"invoice_datetime": "2022‐07‐02T00:00:00Z",
"invoice_number": "INV-00012345",
"items": [
{
"id": "1",
"price": 3.0,
"product": {
"id": "543",
"name": "Crawdad Crippler - 1g - PreRoll",
"sku": "WHODAT"
},
"quantity": 5
}
],
"order": {
"id": "931c12d2-68bc-fa46-a221-12f9edcg5hd7",
"order_number": "SO-0000657",
"status": "Delivering",
"total": 999.99
},
"remaining_amount": 43.23,
"status": "Pending",
"total": 543.23,
"updated_datetime": "2022‐07‐02T00:00:00Z"
}
| Property | Description | Type | Required |
|---|---|---|---|
| charges | A collection of Charges | array(Charge) | false |
| company | A company as shown in Distru | Company | false |
| creator | Information about a user in Distru | User | false |
| custom_data | A collection of CustomData | array(CustomField) | false |
| due_datetime | The datetime by which the invoice should be paid by the customer | string | false |
| id | Unique ID for this invoice | string | false |
| inserted_datetime | The datetime at which the invoice was created in Distru | string | false |
| invoice_datetime | The datetime on which the invoice was placed | string | false |
| invoice_number | The invoice number as shown in the Distru UI | string | false |
| items | A collection of InvoiceItems | array(InvoiceItem) | false |
| owner | Information about a user in Distru | User | false |
| paid_amount | The payment amount recorded against this invoice so far. | number | false |
| remaining_amount | The remaining amount for this invoice | number | false |
| status | The status of this invoice | string | false |
| total | The total for this invoice including taxes, discounts, and all line items | number | false |
| updated_datetime | The datetime at which the invoice was last updated in Distru | string | false |
| order.id | Unique ID for this order | string | false |
| order.order_number | The order number for this sale as seen in the Distru UI | string | false |
| order.status | Status of the associated order | string | false |
| order.total | The total on the order | number | false |
PurchaseChargeRequest
Purchase charge params
| Property | Description | Type | Required |
|---|---|---|---|
| id | Unique ID for this purchase charge. If it exists, an update will be performed; otherwise, it will be used as the ID of a new purchase charge record | string | false |
| name | The name of this charge | string | true |
| percent | The percent value for this charge. Required if unit_type is PERCENT | number | false |
| price | The flat price for this charge. Required if unit_type is PRICE. Auto-calculated for percent-based charges | number | false |
| type | Type of this line item. Note: Tax charges should be sent as CHARGE with a tax_id | string | true |
| unit_type | Determines if this line is tracked as a percentage or a flat charge | string | true |
PackageFull
A package with extended details as shown in Distru
| Property | Description | Type | Required |
|---|---|---|---|
| batch_number | The non-compliance batch number for this package | string | false |
| compliance_label | The compliance (e.g. Metrc) label for this package | string | false |
| cost_per_unit_actual | The cost per unit of this package | number | false |
| cost_per_unit_default | The default cost per unit (from the configured product unit cost) of this package | number | false |
| custom_data | The custom data for this package | array(CustomField) | false |
| expiration_date | The date and time this package expires (ISO 8601) | string | false |
| harvest_date | The harvest date for this package (ISO 8601) | string | false |
| id | Unique ID for this package in Distru | string | false |
| is_trade_sample | True if this package is a Metrc trade sample | boolean | false |
| license | A license as shown in Distru | License | false |
| packaged_date | The compliance packaged date for this package (ISO 8601) | string | false |
| product_unit_quantity | The quantity of this package expressed in it's product's unit type | string | false |
| product_unit_type | A unit type as shown in Distru | UnitType | false |
| quantity | The last known accurate quantity of this package | string | false |
| quantity_assembling | This quantity of this package currently allocated towards a pending assembly | string | false |
| quantity_available | The quantity available for use of this package (i.e. inventory that is not held up on a sales order or assembly.) | string | false |
| status | The status of this package | array(any) | false |
| total_cost_actual | The total actual cost of this package | number | false |
| total_cost_default | The total default cost (from the configured product unit cost) of this package | number | false |
| unit_type | A unit type as shown in Distru | UnitType | false |
| location.id | Unique ID for this Location | string | false |
| location.name | The name of this Location | string | false |
License
A license as shown in Distru
| Property | Description | Type | Required |
|---|---|---|---|
| id | Unique ID for this license | string | false |
| license_number | License number | string | false |
Purchases
A collection of Purchases
| Property | Description | Type | Required |
|---|
AssemblyOutput
An output for an assembly as shown in Distru
| Property | Description | Type | Required |
|---|---|---|---|
| additional_costs | The additional costs for this assembly output | array(AdditionalCost) | false |
| batch | A batch for a product as shown in Distru | Batch | false |
| compliance_label | The compliance label for this assembly output | string | false |
| compliance_quantity | The quantity of this output expressed in the package's unit type. Null if this input is not package-tracked. | number | false |
| cost_per_unit_actual | The cost per unit of this output | number | false |
| cost_per_unit_default | The default cost per unit (from the configured product unit cost) of this output | number | false |
| expiration_date | The expiration date for this assembly output | string | false |
| ingredients | The ingredients for this assembly output | array(AssemblyInput) | false |
| is_finished_good | Is this output a finished good? | boolean | false |
| is_production_batch | Is this output a production batch? | boolean | false |
| location | A location as shown in Distru | Location | false |
| package | A package as shown in Distru | Package | false |
| package_date | The date that this package was created at | string | false |
| package_unit_type | A unit type as shown in Distru | UnitType | false |
| product | A product as shown in Distru | Product | false |
| quantity | The quantity of this output in its product's unit | number | false |
| total_cost_actual | The total actual cost of this output | number | false |
| total_cost_default | The total default cost (from the configured product unit cost) of this output | number | false |
PurchaseItemsRequest
A collection of purchase item params
| Property | Description | Type | Required |
|---|
Location
A location as shown in Distru
| Property | Description | Type | Required |
|---|---|---|---|
| address | Human readable address for this location | string | false |
| company_id | ID of the company that owns this location | string | false |
| deleted_at | The datetime of deletion if the location was deleted | string | false |
| id | Unique ID for this location | string | false |
| license | A license as shown in Distru | License | false |
| license_id | ID of the license that this location is associated with, if null, then this location is not associated to a license | string | false |
| name | Human readable name for this location | string | false |
TestResult
A test result as shown in Distru
| Property | Description | Type | Required |
|---|---|---|---|
| additional_test_results | An additional test result object for a test result as shown in Distru | AdditionalTestResult | false |
| cbd_mg_per_unit | The CBD mg per unit for this test result | string | false |
| cbd_percentage | The CBD percentage for this test result | string | false |
| id | Unique ID for this test result | string | false |
| is_primary | True if this is the primary test result for the product | boolean | false |
| lab_license_number | The license number for the lab that performed this test | string | false |
| lab_name | The name of the lab that performed this test | string | false |
| mg_per_unit_type | The unit type for the mg per unit fields | string | false |
| name | The name of the test result | string | false |
| release_date | The release date for this test result | string | false |
| thc_mg_per_unit | The THC mg per unit for this test result | string | false |
| thc_percentage | The THC percentage for this test result | string | false |
| total_cbd_mg_per_unit | The total CBD mg per unit for this test result | string | false |
| total_cbd_percentage | The total CBD percentage for this test result | string | false |
| total_thc_mg_per_unit | The total THC mg per unit for this test result | string | false |
| total_thc_percentage | The total THC percentage for this test result | string | false |
| updated_datetime | The datetime this test result was updated at | string | false |
ProductCategory
A product category as shown in Distru
{
"id": "88c02a3f-57d9-9473-f8f9-40609d68bbh4",
"name": "Flower",
"type": "FLOWER"
}
| Property | Description | Type | Required |
|---|---|---|---|
| id | Unique ID for this category | string | false |
| name | Human readable name for this category | string | false |
| type | The type of this category | string | false |
OrderChargesRequest
A collection of Order charge params
| Property | Description | Type | Required |
|---|
Contact
Information about a contact in Distru's CRM
{
"company": {
"id": "3f128a34-cc59-4b49-8883-23bf10e59c6c"
},
"email": "contact@example.com",
"full_name": "John Doe",
"id": "12345",
"owner": {
"id": "02c88a3f-d759-4973-88f9-60049d682524"
}
}
| Property | Description | Type | Required |
|---|---|---|---|
| company | A company as shown in Distru | Company | false |
| custom_data | The custom data for this contact | array(CustomField) | false |
| deleted_at | The datetime of deletion if the contact was deleted | string | false |
| description | The description of this contact | string | false |
| driver_license_issuing_state | Driver license issuing state for shipping manifests | string | false |
| driver_license_number | Driver license number for shipping manifests | string | false |
| The email address of this contact | string | false | |
| first_name | The first name of this contact | string | false |
| full_name | The full name of this contact | string | false |
| id | Unique ID for this contact | string | false |
| last_name | The last name of this contact | string | false |
| owner | Information about a user in Distru | User | false |
| phone_number | The phone number of this contact | string | false |
| title | The title of this contact | string | false |
| work_phone_number | The work phone number of this contact | string | false |
PaymentMethods
A collection of Payment Methods
| Property | Description | Type | Required |
|---|
InvoiceChargeRequest
Invoice charge params
| Property | Description | Type | Required |
|---|---|---|---|
| id | Unique ID for this invoice charge. If it exists, an update will be performed; otherwise, it will be used as the ID of a new invoice charge record | string | false |
| name | The name of this charge | string | false |
| percent | The percent (if it is percent-based) of this charge | number | false |
| price | The flat price (if it is price-based) of this charge | number | false |
| type | Determines if this is a charge or discount | string | true |
| unit_type | Determines if this line is tracked as a percentage or a flat charge | string | true |
Companies
A collection of companies
| Property | Description | Type | Required |
|---|
UnitType
A unit type as shown in Distru
{
"name": "Gram"
}
| Property | Description | Type | Required |
|---|---|---|---|
| id | Unique ID for this unit type | string | false |
| name | Human readable name for this unit type | string | false |
ProductPosMapping
A mapping between a Distru product and a POS product
| Property | Description | Type | Required |
|---|---|---|---|
| blaze_product_id | Blaze product ID | string | false |
| blaze_retailer_id | Blaze retailer ID | string | false |
| dutchie_product_id | Dutchie product ID | integer | false |
| dutchie_retailer_id | Dutchie retailer ID | string | false |
| id | Mapping ID | string | false |
| inserted_at | Creation timestamp | string | false |
| pos_type | POS type (BLAZE, DUTCHIE, or TREEZ) | string | false |
| product_id | Distru product ID | string | false |
| treez_product_id | Treez product ID | string | false |
| treez_retailer_id | Treez retailer ID | string | false |
| updated_at | Last update timestamp | string | false |
Company
A company as shown in Distru
| Property | Description | Type | Required |
|---|---|---|---|
| category | The category of this company | string | false |
| custom_data | The custom data for this company | array(CustomField) | false |
| default_email | The default email for this company | string | false |
| default_purchase_order_notes | The default notes that will be automatically added to purchase orders when this company is the supplier | string | false |
| default_sales_order_notes | The default external notes that will be automatically added to sales orders when this company is the customer | string | false |
| deleted_at | The datetime this company relationship was deleted at | string | false |
| group | A company group as shown in Distru | CompanyGroup | false |
| id | Unique ID for this company | string | false |
| invoice_email | The email address where sales order invoices are delivered | string | false |
| legal_business_name | The legal business name for this company | string | false |
| licenses | The license for the company | array(License) | false |
| locations | The location for the company | array(Location) | false |
| name | Human readable name for this company | string | false |
| order_shipment_email | The email address where sales order shipment packing slips are delivered | string | false |
| outstanding_balance_threshold | Threshold that determines when a company is considered to have a too high an outstanding balance. When exceeded, Distru will show a warning banner in the company's page and when selling to this company. | integer | false |
| owner_id | The ID of the user that owns this company | string | false |
| phone_number | The phone number for this company | string | false |
| purchase_order_email | The email address where purchase order slips are delivered | string | false |
| relationship_type | A relationship type as shown in Distru | RelationshipType | false |
| sales_order_email | The email address where sales order slips are delivered | string | false |
| updated_datetime | The datetime this company was last updated at | string | false |
| website | The website for this company | string | false |
AssemblyInput
An input for an assembly as shown in Distru
| Property | Description | Type | Required |
|---|---|---|---|
| batch | A batch for a product as shown in Distru | Batch | false |
| compliance_quantity | The quantity of this input expressed in the package's unit type. Null if this input is not package-tracked. | number | false |
| cost_per_unit_actual | The cost per unit of this input | number | false |
| cost_per_unit_default | The default cost per unit (from the configured product unit cost) of this input | number | false |
| location | A location as shown in Distru | Location | false |
| package | A package as shown in Distru | Package | false |
| product | A product as shown in Distru | Product | false |
| quantity | The quantity of this input in its product's unit | number | false |
| total_cost_actual | The total actual cost of this input | number | false |
| total_cost_default | The total default cost (from the configured product unit cost) of this input | number | false |
Inventories
A list of active and available quantity for each group
| Property | Description | Type | Required |
|---|
Brand
A brand as shown in Distru
{
"name": "Brand 123"
}
| Property | Description | Type | Required |
|---|---|---|---|
| name | Name of the brand | string | false |
Users
A collection of Users
| Property | Description | Type | Required |
|---|
Assembly
Get assemblies
GET /public/v1/assemblies returns proper data for non-compliance assembly
GET /public/v1/assemblies?creation_source=MANUALLY_CREATED&page[number]=1
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiYTM1YmUzMzMtOTdlMS00YzhiLTk4NDQtYTRkM2QzNDYyZDlhIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NzYwIiwidHlwIjoiYWNjZXNzIn0.nL-CxQ7REz_f5GM5EJY5WIK5ZMx9NlrUyjNCNgTjf0A
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: e6dbe37e781ea0000000000000000001-ff7295b5e05656a3-0
{
"data": [
{
"assembly_number": "AS-0000001",
"completion_datetime": "2026-03-27T14:59:23.477082Z",
"compliance_type": "NONE",
"creation_source": "MANUALLY_CREATED",
"custom_data": [
{
"id": 36,
"name": "Custom Field 13",
"value": "Custom Field Value"
}
],
"description": null,
"estimated_start_date": "2024-01-02T03:04:05.000000Z",
"estimated_work_hours": 1,
"estimated_work_minutes": 5,
"fulfilled": true,
"id": "eed3c9b4-ae48-4250-8b64-5aed2116f1e2",
"is_metrc_processing_job": false,
"license": null,
"outputs": [
{
"additional_costs": [
{
"cost_per_unit": "-1",
"description": null,
"name": "CostType 1",
"quantity": "1",
"total_cost_actual": "-1",
"total_cost_default": "0",
"unit_type": {
"id": "00000000-0000-0000-0000-000000001eaa",
"name": "Unit Type 1"
}
}
],
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000000c4",
"name": "B718"
},
"compliance_label": null,
"compliance_quantity": null,
"cost_per_unit": "-0.3",
"cost_per_unit_default": "0.5",
"expiration_datetime": null,
"ingredients": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000000c4",
"name": "B718"
},
"compliance_quantity": null,
"cost_per_unit": "0.2",
"cost_per_unit_default": "1",
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000258",
"id": "00000000-0000-0000-0000-000000000072",
"license_id": null,
"name": "Place 111"
},
"package": null,
"product": {
"id": "1c464357-6b0d-46fa-b0bc-b44dc4b48a8d",
"name": "Product 716",
"sku": "sku 717",
"updated_datetime": "2026-03-27T14:59:23.426257Z"
},
"quantity": "2",
"total_cost_actual": "0.4",
"total_cost_default": "2"
}
],
"is_finished_good": false,
"is_production_batch": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000258",
"id": "00000000-0000-0000-0000-000000000072",
"license_id": null,
"name": "Place 111"
},
"package": null,
"package_datetime": null,
"package_unit_type": null,
"product": {
"id": "1c464357-6b0d-46fa-b0bc-b44dc4b48a8d",
"name": "Product 716",
"sku": "sku 717",
"updated_datetime": "2026-03-27T14:59:23.426257Z"
},
"quantity": "2",
"total_cost_actual": "-0.6",
"total_cost_default": "1"
}
],
"owner_id": "00000000-0000-0000-0000-0000000002f8",
"status": "COMPLETED"
}
],
"next_page": null
}
GET /public/v1/assemblies returns proper data for pending metrc assembly
GET /public/v1/assemblies?creation_source=MANUALLY_CREATED&license_number=CDPH-00000058&page[number]=1
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjQsImlhdCI6MTc3NDYyMzU2NCwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMGNhMDJhNGMtOTRmMi00Zjk1LWFhMGUtMDk4NWVlODM3MzEyIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYzLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTA2MiIsInR5cCI6ImFjY2VzcyJ9.sB-Dgbs_7MAC-GZsPjSG7zlxbQPef2DI2uYjFaZarmI
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: d6c1488c10fc28000000000000000001-37547bc40e8777b9-0
{
"data": [
{
"assembly_number": "AS-0000001",
"completion_datetime": null,
"compliance_type": "METRC",
"creation_source": "MANUALLY_CREATED",
"custom_data": [
{
"id": 39,
"name": "Custom Field 16",
"value": null
}
],
"description": null,
"estimated_start_date": null,
"estimated_work_hours": null,
"estimated_work_minutes": null,
"fulfilled": true,
"id": "14b9b431-46e9-44c6-a5b7-10ee9a18ff7b",
"is_metrc_processing_job": false,
"license": {
"id": "00000000-0000-0000-0000-00000000003b",
"license_number": "CDPH-00000058"
},
"outputs": [
{
"additional_costs": [],
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-000000000145",
"name": "B1037"
},
"compliance_label": "1A4010200001234000000002",
"compliance_quantity": "2",
"cost_per_unit": null,
"cost_per_unit_default": null,
"expiration_datetime": null,
"ingredients": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-000000000145",
"name": "B1037"
},
"compliance_quantity": "0.0353",
"cost_per_unit": null,
"cost_per_unit_default": null,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-00000000030b",
"id": "00000000-0000-0000-0000-0000000000be",
"license_id": "00000000-0000-0000-0000-00000000003b",
"name": "Place 187"
},
"package": {
"batch_number": "1234567890",
"compliance_label": "ABCDEF012345670000000088",
"id": "00000000-0000-0000-0000-000000000031",
"metrc_label": "ABCDEF012345670000000088",
"status": "active"
},
"product": {
"id": "49f7305e-3025-4316-8715-5d0463b9b913",
"name": "Product 1033",
"sku": "sku 1034",
"updated_datetime": "2026-03-27T14:59:24.459374Z"
},
"quantity": "1",
"total_cost_actual": null,
"total_cost_default": null
}
],
"is_finished_good": false,
"is_production_batch": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-00000000030b",
"id": "00000000-0000-0000-0000-0000000000be",
"license_id": "00000000-0000-0000-0000-00000000003b",
"name": "Place 187"
},
"package": null,
"package_datetime": "2026-03-27",
"package_unit_type": {
"id": "00000000-0000-0000-0000-000000002769",
"name": "Gram"
},
"product": {
"id": "49f7305e-3025-4316-8715-5d0463b9b913",
"name": "Product 1033",
"sku": "sku 1034",
"updated_datetime": "2026-03-27T14:59:24.459374Z"
},
"quantity": "2",
"total_cost_actual": null,
"total_cost_default": null
}
],
"owner_id": "00000000-0000-0000-0000-000000000426",
"status": "PENDING"
}
],
"next_page": null
}
GET /public/v1/assemblies returns proper data for completed metrc assembly
GET /public/v1/assemblies?completion_datetime=2026-03-27+13%3A59%3A23.091512Z%2C2026-03-27+15%3A59%3A23.091512Z&creation_source=MANUALLY_CREATED&license_number=CDPH-00000001&page[number]=1
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjEsImlhdCI6MTc3NDYyMzU2MSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiOTYxZjg5NjgtMTE1MS00NTY5LTk5MWItOGRmYzc4ODhkNDZiIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYwLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTMiLCJ0eXAiOiJhY2Nlc3MifQ.6r1RDtjup1ufhE-YWyy7z6ar6pBXrUt3nNPOAnGEv18
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: afb26222f3eab0000000000000000001-e3263c48c84d4371-0
{
"data": [
{
"assembly_number": "AS-0000001",
"completion_datetime": "2026-03-27T14:59:23.091512Z",
"compliance_type": "METRC",
"creation_source": "MANUALLY_CREATED",
"custom_data": [],
"description": null,
"estimated_start_date": null,
"estimated_work_hours": null,
"estimated_work_minutes": null,
"fulfilled": true,
"id": "998580c5-2b69-4015-9c19-db0d7fd0be04",
"is_metrc_processing_job": false,
"license": {
"id": "00000000-0000-0000-0000-000000000002",
"license_number": "CDPH-00000001"
},
"outputs": [
{
"additional_costs": [],
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-000000000006",
"name": "B23"
},
"compliance_label": "1A4010200001234000000000",
"compliance_quantity": "2",
"cost_per_unit": null,
"cost_per_unit_default": null,
"expiration_datetime": null,
"ingredients": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-000000000006",
"name": "B23"
},
"compliance_quantity": "0.0353",
"cost_per_unit": null,
"cost_per_unit_default": null,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000009",
"id": "00000000-0000-0000-0000-000000000009",
"license_id": "00000000-0000-0000-0000-000000000002",
"name": "Place 6"
},
"package": {
"batch_number": "1234567890",
"compliance_label": "ABCDEF012345670000000010",
"id": "00000000-0000-0000-0000-000000000008",
"metrc_label": "ABCDEF012345670000000010",
"status": "active"
},
"product": {
"id": "a6dbda55-cce7-4882-9cf6-4a36711026f2",
"name": "Product 10",
"sku": "sku 11",
"updated_datetime": "2026-03-27T14:59:21.239520Z"
},
"quantity": "1",
"total_cost_actual": null,
"total_cost_default": null
}
],
"is_finished_good": false,
"is_production_batch": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000009",
"id": "00000000-0000-0000-0000-000000000009",
"license_id": "00000000-0000-0000-0000-000000000002",
"name": "Place 6"
},
"package": {
"batch_number": null,
"compliance_label": "1A4010200001234000000000",
"id": "00000000-0000-0000-0000-00000000000d",
"metrc_label": "1A4010200001234000000000",
"status": "active"
},
"package_datetime": "2026-03-27",
"package_unit_type": {
"id": "00000000-0000-0000-0000-00000000003f",
"name": "Gram"
},
"product": {
"id": "a6dbda55-cce7-4882-9cf6-4a36711026f2",
"name": "Product 10",
"sku": "sku 11",
"updated_datetime": "2026-03-27T14:59:21.239520Z"
},
"quantity": "2",
"total_cost_actual": null,
"total_cost_default": null
}
],
"owner_id": "00000000-0000-0000-0000-00000000000d",
"status": "COMPLETED"
}
],
"next_page": null
}
GET /public/v1/assemblies returns proper data for biotrack assembly
GET /public/v1/assemblies?completion_datetime=2026-03-27+13%3A59%3A23.810226Z%2C2026-03-27+15%3A59%3A23.810226Z&creation_source=MANUALLY_CREATED&license_number=CDPH-00000035&page[number]=1
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiOTg5OGQ3ZDQtOGQ4Ni00YWYzLWE0N2QtZmZhZWQ2MDcwOTY1IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6ODIwIiwidHlwIjoiYWNjZXNzIn0.VFgc34HIHZfYbMBvcIkwZGq-lCKJGPFEijE4RHkpdrI
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: b41a39c1634360000000000000000001-265a5a68e85fab65-0
{
"data": [
{
"assembly_number": "AS-0000001",
"completion_datetime": "2026-03-27T14:59:23.810226Z",
"compliance_type": "BIOTRACK",
"creation_source": "MANUALLY_CREATED",
"custom_data": [],
"description": null,
"estimated_start_date": null,
"estimated_work_hours": null,
"estimated_work_minutes": null,
"fulfilled": true,
"id": "5ecb8001-3894-4b86-83d5-1b4eb9fce8de",
"is_metrc_processing_job": false,
"license": {
"id": "00000000-0000-0000-0000-000000000024",
"license_number": "CDPH-00000035"
},
"outputs": [
{
"additional_costs": [],
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000000d2",
"name": "B755"
},
"compliance_label": null,
"compliance_quantity": "1",
"cost_per_unit": null,
"cost_per_unit_default": null,
"expiration_datetime": null,
"ingredients": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000000d2",
"name": "B755"
},
"compliance_quantity": "1",
"cost_per_unit": null,
"cost_per_unit_default": null,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-00000000027f",
"id": "00000000-0000-0000-0000-000000000091",
"license_id": "00000000-0000-0000-0000-000000000024",
"name": "Place 142"
},
"package": {
"batch_number": null,
"compliance_label": "1",
"id": "00000000-0000-0000-0000-00000000001e",
"metrc_label": "1",
"status": "active"
},
"product": {
"id": "1adbfef2-c2de-4ea5-9e52-455c603e103c",
"name": "Product 753",
"sku": "sku 754",
"updated_datetime": "2026-03-27T14:59:23.671214Z"
},
"quantity": "1",
"total_cost_actual": null,
"total_cost_default": null
}
],
"is_finished_good": false,
"is_production_batch": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-00000000027f",
"id": "00000000-0000-0000-0000-000000000091",
"license_id": "00000000-0000-0000-0000-000000000024",
"name": "Place 142"
},
"package": {
"batch_number": null,
"compliance_label": null,
"id": "00000000-0000-0000-0000-000000000021",
"metrc_label": null,
"status": "active"
},
"package_datetime": null,
"package_unit_type": {
"id": "00000000-0000-0000-0000-000000002018",
"name": "Gram"
},
"product": {
"id": "1adbfef2-c2de-4ea5-9e52-455c603e103c",
"name": "Product 753",
"sku": "sku 754",
"updated_datetime": "2026-03-27T14:59:23.671214Z"
},
"quantity": "1",
"total_cost_actual": null,
"total_cost_default": null
}
],
"owner_id": "00000000-0000-0000-0000-000000000334",
"status": "COMPLETED"
}
],
"next_page": null
}
Get assemblies ordered from oldest to newest by their last modified date.
Note: The page size for this endpoint is 500 assemblies per page. This endpoint returns eventually consistent data, with changes taking up to 1 second to propagate in responses.
Request
GET /public/v1/assemblies
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| completion_datetime | Filter assemblies by their completion datetime | query | string | false | 2022-07-10T00:00:00Z, | |
| page | Pagination information | query | number | false | ?page[number]=1 | |
| creation_source | Filter assemblies by their creation source. Options include MANUALLY_CREATED, SPLIT_PACKAGE, SALES_ORDER and LAB_TESTING | query | string | false | ||
| license_number | Filter assemblies by their license number | query | string | false |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | A list of assemblies | Assemblies |
Batch
Get batches
GET /public/v1/batches returns batches related to the company
GET /public/v1/batches
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiYmFmYzg0ZjgtZWEwNi00ZDQ4LWI5MTgtNDdhNmYwYTI2MmIwIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NTYyIiwidHlwIjoiYWNjZXNzIn0.guDKJy9sCBpjo_YognTjIcZliG7ZAw0zUptm1_jLOUE
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 37750ce5cf2606000000000000000001-64a17dd960f59ba6-0
{
"data": [
{
"batch_number": null,
"custom_data": [
{
"id": 31,
"name": "Custom Field 8",
"value": "Custom Data 1"
}
],
"deleted_at": null,
"description": null,
"expiration_date": "2024-01-01T00:00:00.000000Z",
"id": "00000000-0000-0000-0000-000000000071",
"manufactured_datetime": "2024-01-02T03:04:05.000000Z",
"name": "B461",
"owner_id": "00000000-0000-0000-0000-000000000236",
"primary_test_result": null,
"product_id": "2f0980fb-e607-4741-8cab-e3e1598c475c"
},
{
"batch_number": null,
"custom_data": [
{
"id": 31,
"name": "Custom Field 8",
"value": null
}
],
"deleted_at": null,
"description": null,
"expiration_date": null,
"id": "00000000-0000-0000-0000-000000000073",
"manufactured_datetime": "2024-01-02T03:04:05.000000Z",
"name": "B467",
"owner_id": "00000000-0000-0000-0000-000000000240",
"primary_test_result": {
"cbd_mg_per_unit": "1",
"cbd_mg_per_unit_total": "2",
"cbd_percentage": "3",
"cbd_percentage_total": "4",
"mg_per_unit_type": "mg/mL",
"name": "File.pdf",
"thc_mg_per_unit": "5",
"thc_mg_per_unit_total": "6",
"thc_percentage": "7",
"thc_percentage_total": "8"
},
"product_id": "923763b5-8696-4e67-b4ee-6b877e2a60b3"
}
],
"next_page": null
}
GET /public/v1/batches returns cost data when include_costs is true
GET /public/v1/batches?include_costs=true
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjEsImlhdCI6MTc3NDYyMzU2MSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMjhjNzg0YTEtOWI0MS00NjRmLTg3NGMtNTliYTI3ZDg3ODdlIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYwLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTc2IiwidHlwIjoiYWNjZXNzIn0.7a2TkQACSbVJw0avRa3mmQFJEQemRcoqBlVKbHXTCRU
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 8a96395b0e5d88000000000000000001-2b39ed2d0c5f2ea5-0
{
"data": [
{
"batch_number": null,
"cost_per_unit_actual": "2.11",
"cost_per_unit_default": "5",
"custom_data": [],
"deleted_at": null,
"description": null,
"expiration_date": null,
"id": "00000000-0000-0000-0000-00000000002d",
"manufactured_datetime": "2026-03-27T14:59:21.664495Z",
"name": "B152",
"owner_id": "00000000-0000-0000-0000-0000000000ba",
"primary_test_result": null,
"product_id": "9c680492-2d6c-4158-817d-a4dec867d467",
"total_cost_actual": "21.1",
"total_cost_default": "50"
}
],
"next_page": null
}
GET /public/v1/batches filters by batch_ids
GET /public/v1/batches?batch_ids[]=00000000-0000-0000-0000-000000000085&batch_ids[]=00000000-0000-0000-0000-000000000086
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiYmU1YmRkY2QtODEzOC00MDA4LWFlZTYtNDdjYzQxYWIzODE1IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NjI1IiwidHlwIjoiYWNjZXNzIn0.Nj1i_ybdq9DRzgFX0-sBS-I8qDDAWmjNXVszkHIFKtY
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 8f2da1db51d8c8000000000000000001-a1bd0eb00480585a-0
{
"data": [
{
"batch_number": null,
"custom_data": [],
"deleted_at": null,
"description": null,
"expiration_date": null,
"id": "00000000-0000-0000-0000-000000000085",
"manufactured_datetime": "2026-03-27T14:59:23.024116Z",
"name": "B519",
"owner_id": "00000000-0000-0000-0000-000000000273",
"primary_test_result": null,
"product_id": "ca07ee01-ad53-4808-b4a4-3643a7e1c1d4"
},
{
"batch_number": null,
"custom_data": [],
"deleted_at": null,
"description": null,
"expiration_date": null,
"id": "00000000-0000-0000-0000-000000000086",
"manufactured_datetime": "2026-03-27T14:59:23.024116Z",
"name": "B522",
"owner_id": "00000000-0000-0000-0000-000000000279",
"primary_test_result": null,
"product_id": "0ed45594-d0d6-4432-9513-1f49c774e26a"
}
],
"next_page": null
}
Get batches sorted by their creation date and filtered by various attributes.
Note: The page size for this endpoint is 5000 batches per page. This endpoint returns eventually consistent data, with changes taking up to 1 second to propagate in responses.
Request
GET /public/v1/batches
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| batch_ids | Filter batches by batch IDs | query | array | false | ?batch_ids[]=00000000-0000-0000-0000-000000000001&batch_ids[]=00000000-0000-0000-0000-000000000002 | |
| product_id | Filter batches by product ID | query | string | false | ||
| batch_number | Filter batches by batch number | query | string | false | ||
| inserted_datetime | Filter batches by their creation datetime | query | string | false | 2022-07-10T00:00:00Z, | |
| deleted | Filter deleted batches. no returns non-deleted, only returns deleted, include returns both. |
query | string | false | no | |
| page | Pagination information | query | number | false | ?page[number]=1 | |
| updated_datetime | Filter batches by the datetime they were most recently modified | query | string | false | ,2022-07-10T00:00:00Z |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | A list of batches | Batches |
Create a batch
POST /public/v1/batches Errors from service messages are properly reflected in the response
POST /public/v1/batches
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiN2QyMGJmYzAtY2UwYi00NjA0LTlhYzYtOWZkMTUzMDdmMzBjIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NjgyIiwidHlwIjoiYWNjZXNzIn0.po8hv1ng_nO-NnKS0drNnxtp_oAZs9XeAnTd0THdcso
{
"owner_id": "1d99e953-78b1-4b3b-bcdf-bcb80fa33a90",
"product_id": "15ab8816-0b2c-4a4f-9fcf-b721646fd40a"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: 1d1a2c12707462000000000000000001-3c4c81db0d1d197c-0
{
"errors": [
{
"context": {},
"message": "Owner not found",
"pointer": [
"owner_id"
],
"section": "body"
},
{
"context": {},
"message": "Product not found",
"pointer": [
"product_id"
],
"section": "body"
},
{
"context": {},
"message": "Unable to verify inventory tracking method",
"pointer": [
"product_id"
],
"section": "body"
}
]
}
POST /public/v1/batches Can create batch with all optional fields missing
POST /public/v1/batches
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiNzY4NTM0NmUtOTFkNC00ZWU2LTkxZTAtNGIzYTY4NWM3OTYzIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NjA5IiwidHlwIjoiYWNjZXNzIn0.CTFYpE0uW6xSzW9iEdAHuw3YVC3SZlriZLgCa_MHjLo
{
"product_id": "9260f038-780b-4769-9df7-96a7bf5e5d0f"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: caa70391de1090000000000000000001-30638871aa7bf89e-0
{
"data": {
"batch_number": null,
"custom_data": [],
"deleted_at": null,
"description": null,
"expiration_date": null,
"id": "00000000-0000-0000-0000-000000000081",
"manufactured_datetime": "2026-03-27T14:59:22.958185Z",
"name": "B1",
"owner_id": null,
"product_id": "9260f038-780b-4769-9df7-96a7bf5e5d0f"
}
}
POST /public/v1/batches Can create batch with all optional fields provided
POST /public/v1/batches
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiM2I2NGNkNTEtOGNjZS00OWI2LWI0OGItNGY3NzA0MzE0NjUxIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NTAzIiwidHlwIjoiYWNjZXNzIn0.gKXBlNtRRK_PaRu6t0InXHlzT6QoFFZxzWUgQC5_95U
{
"batch_number": "B1",
"description": "Test batch",
"expiration_date": "2025-01-01T00:00:00.000000Z",
"manufactured_datetime": "2025-01-02T03:04:05.000000Z",
"owner_id": "00000000-0000-0000-0000-0000000001fe",
"product_id": "eb6b407c-ceb0-4360-8dc8-bf26496a14db"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: c1f5953d7761a8000000000000000001-e219a94f99c2daa1-0
{
"data": {
"batch_number": "B1",
"custom_data": [],
"deleted_at": null,
"description": "Test batch",
"expiration_date": "2025-01-01T00:00:00.000000Z",
"id": "00000000-0000-0000-0000-00000000006d",
"manufactured_datetime": "2025-01-02T03:04:05.000000Z",
"name": "B1",
"owner_id": "00000000-0000-0000-0000-0000000001fe",
"product_id": "eb6b407c-ceb0-4360-8dc8-bf26496a14db"
}
}
Create a single batch.
Request
POST /public/v1/batches
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| product_id | The ID of the product that this batch belongs to. | query | string | false | ||
| batch_number | The batch number of the batch. | query | string | false | ||
| expiration_date | The expiration date of the batch. | query | string | false | ||
| manufactured_datetime | The manufactured datetime of the batch (ISO 8601 format). | query | string | false | ||
| owner_id | The ID of the user that is the designated owner of this batch. | query | string | false | ||
| description | The description of the batch. | query | string | false |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | A single batch | Batch |
Company
Get companies
GET /public/companies returns companies related to the company
GET /public/v1/companies
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiNzk2YmRhMjAtM2U0ZC00YzM3LWE2OWItODY2M2FhNzMzMTNkIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6Mzc0IiwidHlwIjoiYWNjZXNzIn0.kWjuAfy2qXkdadrCA-fMLzRAoS8rMfjSa1gyTONHnLE
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: abc383d81d1770000000000000000001-88e4fc4a098d0124-0
{
"data": [
{
"category": "Retailer",
"custom_data": [
{
"id": 23,
"name": "Custom Field 3",
"value": "Custom Data 1"
}
],
"default_email": "company-1@example.com",
"default_purchase_order_notes": "Default Purchase Order Notes 1",
"default_sales_order_notes": "Default Order External Notes 1",
"deleted_at": null,
"group": {
"id": "00000000-0000-0000-0000-000000000002",
"name": "Comp Rel Group 1"
},
"id": "00000000-0000-0000-0000-0000000000b7",
"invoice_email": "invoice email",
"legal_business_name": "Company Legal Name 1",
"licenses": [],
"locations": [
{
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000128",
"id": "00000000-0000-0000-0000-000000000039",
"license_id": null,
"name": "Place 54"
}
],
"name": "Company 291",
"order_shipment_email": "order shipment email",
"outstanding_balance_threshold": 1000,
"owner_id": "00000000-0000-0000-0000-00000000018d",
"phone_number": "1234567890",
"purchase_order_email": "purchase email",
"relationship_type": {
"id": "00000000-0000-0000-0000-000000000002",
"name": "Supplier"
},
"sales_order_email": "order email",
"updated_datetime": "2023-11-03T00:00:00.000000Z",
"website": "https://www.example.com"
},
{
"category": "Microbusiness",
"custom_data": [
{
"id": 23,
"name": "Custom Field 3",
"value": null
}
],
"default_email": "company-687@example.com",
"default_purchase_order_notes": null,
"default_sales_order_notes": null,
"deleted_at": null,
"group": null,
"id": "00000000-0000-0000-0000-0000000000bb",
"invoice_email": null,
"legal_business_name": "Company Legal Name 300",
"licenses": [
{
"id": "00000000-0000-0000-0000-000000000008",
"license_number": "CDPH-00000007"
}
],
"locations": [],
"name": "Company 300",
"order_shipment_email": null,
"outstanding_balance_threshold": null,
"owner_id": null,
"phone_number": null,
"purchase_order_email": null,
"relationship_type": null,
"sales_order_email": null,
"updated_datetime": "2023-12-02T00:00:00.000000Z",
"website": null
}
],
"next_page": null
}
Get companies sorted by their creation date and filtered by various attributes
Note: The page size for this endpoint is 5000 companies per page. This endpoint returns eventually consistent data, with changes taking up to 1 second to propagate in responses.
Request
GET /public/v1/companies
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| inserted_datetime | Filter companies by their creation datetime | query | string | false | 2022-07-10T00:00:00Z, | |
| deleted | Filter deleted companies. no returns non-deleted, only returns deleted, include returns both. |
query | string | false | no | |
| page | Pagination information | query | number | false | ?page[number]=1 | |
| updated_datetime | Filter companies by the datetime they were most recently modified | query | string | false | ,2022-07-10T00:00:00Z |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | A list of companies | Companies |
Upsert a company
POST /public/v1/companies creates a new company relationship with minimal params and returns 201
POST /public/v1/companies
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMjk1NjBkMDQtY2E1OC00ZmFjLTlkNzktZWQwODI3MzkwMWYxIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NDQ0IiwidHlwIjoiYWNjZXNzIn0.vlKP_x1mtkQmC5FM0947M7q9Kl-KxRA9EF7IxSD45RE
{
"name": "New Retailer"
}
Response
201
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 31e91f659e8050000000000000000001-25beacd3c2079e39-0
{
"data": {
"category": null,
"custom_data": [],
"default_email": null,
"default_purchase_order_notes": null,
"default_sales_order_notes": null,
"deleted_at": null,
"group": null,
"id": "00000000-0000-0000-0000-0000000000ce",
"invoice_email": null,
"legal_business_name": "",
"licenses": [],
"locations": [],
"name": "New Retailer",
"order_shipment_email": null,
"outstanding_balance_threshold": null,
"owner_id": null,
"phone_number": null,
"purchase_order_email": null,
"relationship_type": null,
"sales_order_email": null,
"updated_datetime": "2026-03-27T14:59:22.539015Z",
"website": null
}
}
POST /public/v1/companies creates a new company relationship with all optional fields and returns 201
POST /public/v1/companies
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjEsImlhdCI6MTc3NDYyMzU2MSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiYWE4OGNjYTMtYjNlOC00YjUxLThkYWEtZGU0OTRiYjJhZmMxIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYwLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MjU2IiwidHlwIjoiYWNjZXNzIn0.sTfTaiHlhBUlSlWLP9XvTVkL-nZweC2icmuPuGQbddk
{
"category": "Retail",
"custom_data": {
"19": "VIP"
},
"default_email": "info@fullretailer.com",
"default_purchase_order_notes": "Purchase notes",
"default_sales_order_notes": "Sales notes",
"group_id": "00000000-0000-0000-0000-000000000001",
"invoice_email": "invoice@fullretailer.com",
"legal_business_name": "Full Retailer LLC",
"name": "Full Retailer",
"order_shipment_email": "shipping@fullretailer.com",
"outstanding_balance_threshold": 5000,
"owner_id": "00000000-0000-0000-0000-000000000103",
"phone_number": "555-1234",
"purchase_order_email": "purchasing@fullretailer.com",
"relationship_type_id": "00000000-0000-0000-0000-000000000001",
"sales_order_email": "orders@fullretailer.com",
"website": "https://fullretailer.com"
}
Response
201
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 46749e18275674000000000000000001-0e288ae26fde87ca-0
{
"data": {
"category": "Retail",
"custom_data": [
{
"id": 19,
"name": "Custom Field 2",
"value": "VIP"
}
],
"default_email": "info@fullretailer.com",
"default_purchase_order_notes": "Purchase notes",
"default_sales_order_notes": "Sales notes",
"deleted_at": null,
"group": {
"id": "00000000-0000-0000-0000-000000000001",
"name": "Comp Rel Group 0"
},
"id": "00000000-0000-0000-0000-00000000007b",
"invoice_email": "invoice@fullretailer.com",
"legal_business_name": "Full Retailer LLC",
"licenses": [],
"locations": [],
"name": "Full Retailer",
"order_shipment_email": "shipping@fullretailer.com",
"outstanding_balance_threshold": 5000,
"owner_id": "00000000-0000-0000-0000-000000000103",
"phone_number": "555-1234",
"purchase_order_email": "purchasing@fullretailer.com",
"relationship_type": {
"id": "00000000-0000-0000-0000-000000000001",
"name": "Supplier"
},
"sales_order_email": "orders@fullretailer.com",
"updated_datetime": "2026-03-27T14:59:22.035353Z",
"website": "https://fullretailer.com"
}
}
POST /public/v1/companies updates an existing company relationship and returns 200
POST /public/v1/companies
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiZmMzMWJiNDYtMWFlNi00OTgxLThhNmItYmE2NGVlYTdiN2Y1IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NDk1IiwidHlwIjoiYWNjZXNzIn0.ZNn4ym_vYOcBcoF6O4SbXs-Rv630PIOi85RdVm8grLc
{
"id": "00000000-0000-0000-0000-0000000000e1",
"invoice_email": "newinvoice@example.com",
"name": "Updated Name"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 833f55542098d8000000000000000001-118920308b0475af-0
{
"data": {
"category": "Other",
"custom_data": [],
"default_email": "company-874@example.com",
"default_purchase_order_notes": null,
"default_sales_order_notes": null,
"deleted_at": null,
"group": null,
"id": "00000000-0000-0000-0000-0000000000e1",
"invoice_email": "newinvoice@example.com",
"legal_business_name": "Company Legal Name 382",
"licenses": [],
"locations": [],
"name": "Updated Name",
"order_shipment_email": null,
"outstanding_balance_threshold": null,
"owner_id": "00000000-0000-0000-0000-0000000001f4",
"phone_number": null,
"purchase_order_email": null,
"relationship_type": null,
"sales_order_email": null,
"updated_datetime": "2026-03-27T14:59:22.642025Z",
"website": null
}
}
Upsert a single company. To update an existing company, pass in an existing company ID in the id field. If you do not pass in an ID, a new company and its associated company will be created.
Request
POST /public/v1/companies
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| id | Unique ID for this company. If given, the matching record will be updated. If not given, a new company will be created. | query | string | false | ||
| name | Name of the related company | query | string | false | Acme Dispensary | |
| category | Category of the related company | query | string | false | Retailer | |
| legal_business_name | Legal business name of the related company | query | string | false | ||
| default_email | Default email address for the related company | query | string | false | ||
| phone_number | Phone number for the related company | query | string | false | ||
| website | Website URL for the related company | query | string | false | ||
| default_sales_order_notes | Default notes included on sales orders for this company | query | string | false | ||
| default_purchase_order_notes | Default notes included on purchase orders for this company | query | string | false | ||
| invoice_email | Email address for invoices sent to this company | query | string | false | ||
| sales_order_email | Email address for sales orders sent to this company | query | string | false | ||
| purchase_order_email | Email address for purchase orders sent to this company | query | string | false | ||
| order_shipment_email | Email address for order shipment notifications sent to this company | query | string | false | ||
| relationship_type_id | The ID of the relationship type to assign to this company relationship | query | string | false | ||
| group_id | The ID of the group to assign to this company relationship | query | string | false | ||
| owner_id | The ID of the user that owns this company relationship | query | string | false | ||
| outstanding_balance_threshold | Threshold amount (in cents) above which an outstanding balance warning is triggered | query | integer | false | ||
| custom_data | Custom data for this company relationship | query | object | false |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | An updated company relationship | Company |
| 201 | A new company relationship | Company |
| 400 | Bad request | |
| 404 | Not found |
Contact
Get contacts
GET /public/v1/contacts returns contacts related to the company
GET /public/v1/contacts
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiYzgxZjM5MzgtMDc3YS00ZmVhLWE4M2QtNjhjZjAyYzNmZDE2IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NTUwIiwidHlwIjoiYWNjZXNzIn0.cRKq7k1CEHpykANtlpLBJYKAhHgxX9tnTIUFTNyijHw
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: f8f0f5837b8870000000000000000001-a04a3bb023665c56-0
{
"data": [
{
"company": {
"id": "00000000-0000-0000-0000-000000000101"
},
"custom_data": [
{
"id": 30,
"name": "Custom Field 7",
"value": "Custom Data 1"
}
],
"deleted_at": null,
"description": "Description 1",
"driver_license_issuing_state": "CA",
"driver_license_number": "1234567890",
"email": "email1",
"first_name": "first",
"full_name": "first name1",
"id": "00000000-0000-0000-0000-00000000001c",
"last_name": "name1",
"owner": {
"id": "00000000-0000-0000-0000-00000000022a"
},
"phone_number": "1234567890",
"title": null,
"work_phone_number": "1234567891"
},
{
"company": {
"id": "00000000-0000-0000-0000-000000000104"
},
"custom_data": [
{
"id": 30,
"name": "Custom Field 7",
"value": null
}
],
"deleted_at": null,
"description": "Description 2",
"driver_license_issuing_state": "NV",
"driver_license_number": "123456789",
"email": "email2",
"first_name": "first",
"full_name": "first name2",
"id": "00000000-0000-0000-0000-00000000001d",
"last_name": "name2",
"owner": {
"id": "00000000-0000-0000-0000-00000000022f"
},
"phone_number": "1234567890",
"title": null,
"work_phone_number": "1234567892"
}
],
"next_page": null
}
Get contacts sorted by their creation date and filtered by various attributes
Note: The page size for this endpoint is 1000 contacts per page. This endpoint returns eventually consistent data, with changes taking up to 1 second to propagate in responses.
Request
GET /public/v1/contacts
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| inserted_datetime | Filter contacts by their creation datetime | query | string | false | 2022-07-10T00:00:00Z, | |
| deleted | Filter deleted contacts. no returns non-deleted, only returns deleted, include returns both. |
query | string | false | no | |
| page | Pagination information | query | number | false | ?page[number]=1 | |
| updated_datetime | Filter contacts by the datetime they were most recently modified | query | string | false | ,2022-07-10T00:00:00Z |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | A list of contacts | Contacts |
Upsert a contact
POST /public/v1/contacts creating a contact with all optional fields succeeds with a 201 response containing the new contact
POST /public/v1/contacts
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiYmM2MjVmY2MtYWQ1ZS00OTYyLWExNGQtNjViMDZhYThjMGQ1IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NTE0IiwidHlwIjoiYWNjZXNzIn0.54dXIgqveKZ340ax8OUen6KCxNfqIS5Kn34hClEBfd8
{
"company_id": "00000000-0000-0000-0000-0000000000eb",
"custom_data": {
"29": "Preferred"
},
"description": "Notes",
"driver_license_issuing_state": "CA",
"driver_license_number": "D123",
"email": "jane@example.com",
"first_name": "Jane",
"last_name": "Doe",
"owner_id": "00000000-0000-0000-0000-000000000204",
"phone_number": "555-1111",
"title": "Buyer",
"work_phone_number": "555-2222"
}
Response
201
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 6caa16094c2be8000000000000000001-603df925f02c9bf1-0
{
"data": {
"company": {
"id": "00000000-0000-0000-0000-0000000000eb"
},
"custom_data": [
{
"id": 29,
"name": "Custom Field 6",
"value": "Preferred"
}
],
"deleted_at": null,
"description": "Notes",
"driver_license_issuing_state": "CA",
"driver_license_number": "D123",
"email": "jane@example.com",
"first_name": "Jane",
"full_name": "Jane Doe",
"id": "00000000-0000-0000-0000-000000000019",
"last_name": "Doe",
"owner": {
"id": "00000000-0000-0000-0000-000000000204"
},
"phone_number": "555-1111",
"title": "Buyer",
"work_phone_number": "555-2222"
}
}
Upsert a single contact. To update an existing contact, pass in an existing contact ID in the id field as well as the other fields you want to update. If you do not pass in an ID, a new contact will be created.
Request
POST /public/v1/contacts
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| id | Unique ID for this contact. If given, the contact matching the ID will be updated. If not given, a new contact will be created. | query | string | false | ||
| first_name | First name for the contact | query | string | true | ||
| last_name | Last name for the contact | query | string | false | ||
| title | Job title for the contact | query | string | false | ||
| Email address for the contact | query | string | false | |||
| phone_number | Phone number for the contact | query | string | false | ||
| work_phone_number | Work phone number for the contact | query | string | false | ||
| description | Description for the contact | query | string | false | ||
| company_id | The ID of the company relationship (company) this contact belongs to | query | string | false | ||
| driver_license_number | Driver license number for shipping manifests | query | string | false | ||
| driver_license_issuing_state | Driver license issuing state for shipping manifests | query | string | false | ||
| owner_id | The ID of the user that owns this contact | query | string | false | ||
| custom_data | The custom data for this contact | query | object | false |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | An updated contact | Contact |
| 201 | A new contact | Contact |
| 400 | Bad request | |
| 404 | Not found |
CustomField
Create a custom field
POST /public/v1/custom-fields can create a custom field of type text
POST /public/v1/custom-fields
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiYzg5YzEwNjUtYWYwYi00OWNjLWE1OTUtNTFlYTBmMzI2MTFjIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MzE2IiwidHlwIjoiYWNjZXNzIn0.eXn5ChRqs8z9LskEpM3Z0ozdxqaYJyeLMzXad3_AJHI
{
"description": "Notes",
"field_type": "text",
"filterable": false,
"name": "Text Field",
"parent_object": "product"
}
Response
201
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 0e948f1433b4a6000000000000000001-b2c242110508cba4-0
{
"data": {
"description": "Notes",
"field_options": [],
"field_type": "text",
"filterable": false,
"id": 22,
"name": "Text Field",
"parent_object": "product"
}
}
POST /public/v1/custom-fields can create a custom field of type date
POST /public/v1/custom-fields
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjEsImlhdCI6MTc3NDYyMzU2MSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMjg1NDllZTEtMmZkYi00YzRlLTliOTMtMjc4YmRlYjlkNDI3IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYwLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MjM2IiwidHlwIjoiYWNjZXNzIn0.N3JjxHJQ3CxayOHYGGTukvPOVMlcy-LxFcz6e2KvcNQ
{
"field_type": "date",
"name": "Date Field",
"parent_object": "product"
}
Response
201
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: f12f720120e0d8000000000000000001-2543fa5399a5b6bd-0
{
"data": {
"description": null,
"field_options": [],
"field_type": "date",
"filterable": false,
"id": 17,
"name": "Date Field",
"parent_object": "product"
}
}
POST /public/v1/custom-fields can create a custom field of type dropdown
POST /public/v1/custom-fields
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjEsImlhdCI6MTc3NDYyMzU2MSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiZWM5ZDBlYTctZDg1Mi00ZTBiLTkwYTgtMTUwNmFkMDdmMzliIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYwLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MjUzIiwidHlwIjoiYWNjZXNzIn0.Mzg099PPcszibMknehEfLIIvQmatQLoYiRKe7Z7D_1k
{
"field_options": [
"A",
"B"
],
"field_type": "dropdown",
"filterable": true,
"name": "Dropdown Field",
"parent_object": "product"
}
Response
201
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 79dab1cc69c654000000000000000001-c3ca7a9116a4ee34-0
{
"data": {
"description": null,
"field_options": [
"A",
"B"
],
"field_type": "dropdown",
"filterable": true,
"id": 18,
"name": "Dropdown Field",
"parent_object": "product"
}
}
POST /public/v1/custom-fields can create a custom field of type checkbox
POST /public/v1/custom-fields
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjEsImlhdCI6MTc3NDYyMzU2MSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiNWZkMWJjY2UtYmFkNS00OGJkLWFhNTctMzJiNWU1ZDdkZGVhIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYwLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MjY0IiwidHlwIjoiYWNjZXNzIn0.MX-78hQtuRXP_hwqlWyV3Tw_KzTwGc55oGaNtr-2mFo
{
"field_options": [
"Option 1"
],
"field_type": "checkbox",
"filterable": true,
"name": "Checkbox Field",
"parent_object": "product"
}
Response
201
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 2cf052b888dffe000000000000000001-28ea37a7dade9594-0
{
"data": {
"description": null,
"field_options": [
"Option 1"
],
"field_type": "checkbox",
"filterable": true,
"id": 20,
"name": "Checkbox Field",
"parent_object": "product"
}
}
Create a custom field for the specified parent object. Updates are not supported for this endpoint.
Request
POST /public/v1/custom-fields
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| name | Name of the custom field | query | string | true | ||
| description | Description of the custom field | query | string | false | ||
| parent_object | Parent object attached to the field | query | string | true | ||
| field_type | Field type | query | string | true | ||
| filterable | Whether the field is filterable | query | boolean | false | ||
| field_options | Field options | query | array | false |
Responses
| Status | Description | Schema |
|---|---|---|
| 201 | Custom field created | CustomFieldDefinition |
| 400 | Invalid parameters |
FileAttachment
Insert a file attachment
POST /public/v1/file-attachments uploads and creates a file attachment successfully with simplified reference
POST /public/v1/file-attachments
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiYzgyNTExNmMtZjM2NC00MTIzLWJhZDEtNjA0YWFiNzM4NDQ2IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MzMyIiwidHlwIjoiYWNjZXNzIn0.-iZ2XUzGM3hO8c8Fg_HLI_xUk8QkUSFCJ5goP1els6A
{
"file": {
"content_type": "image/png",
"filename": "test-image.png"
},
"name": "My Test Image",
"product_id": "10715a0f-7a5c-4c1a-908d-21ec7b83af59"
}
Response
201
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: d1342ac8087ce8000000000000000001-cf8db2e8fbcaacbb-0
{
"data": {
"ai_order_intake_id": null,
"assembly_id": null,
"batch_id": null,
"company_relationship_id": null,
"contact_id": null,
"draft_purchase_id": null,
"id": "00000000-0000-0000-0000-000000000005",
"invoice_id": null,
"license_id": null,
"mime_type": "image/png",
"name": "My Test Image",
"order_id": null,
"order_shipment_id": null,
"product_id": "10715a0f-7a5c-4c1a-908d-21ec7b83af59",
"purchase_id": null,
"request_id": null,
"return_id": null,
"size_in_bytes": 355974,
"stock_transfer_id": null,
"task_id": null,
"upload_datetime": "2026-03-27T14:59:22.213967Z",
"uploader": {
"id": "00000000-0000-0000-0000-00000000014c",
"name": "FirstName664 LastName665"
},
"url": "/tmp/2e4ce8a8-7c5a-4f31-abc1-20d36057e26e/test-image.png"
}
}
Insert a new file attachment. The file will be uploaded to S3 and associated with the specified entity. Exactly one reference ID must be provided (product_id, order_id, purchase_id, etc.).
Request
POST /public/v1/file-attachments
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| file | The file to upload | formData | file | true | ||
| name | Display name for the attachment (defaults to filename if not provided) | formData | string | false | ||
| product_id | Product ID to attach file to | formData | string | false | 550e8400-e29b-41d4-a716-446655440000 | |
| order_id | Order ID to attach file to | formData | string | false | 550e8400-e29b-41d4-a716-446655440000 | |
| purchase_id | Purchase ID to attach file to | formData | string | false | 550e8400-e29b-41d4-a716-446655440000 | |
| invoice_id | Invoice ID to attach file to | formData | string | false | 550e8400-e29b-41d4-a716-446655440000 | |
| batch_id | Batch ID to attach file to | formData | string | false | 550e8400-e29b-41d4-a716-446655440000 | |
| contact_id | Contact ID to attach file to | formData | string | false | 550e8400-e29b-41d4-a716-446655440000 | |
| company_relationship_id | Company relationship ID to attach file to | formData | string | false | 550e8400-e29b-41d4-a716-446655440000 | |
| request_id | Request ID to attach file to | formData | string | false | 550e8400-e29b-41d4-a716-446655440000 | |
| task_id | Task ID to attach file to | formData | string | false | 550e8400-e29b-41d4-a716-446655440000 | |
| stock_transfer_id | Stock transfer ID to attach file to | formData | string | false | 550e8400-e29b-41d4-a716-446655440000 | |
| assembly_id | Assembly ID to attach file to | formData | string | false | 550e8400-e29b-41d4-a716-446655440000 | |
| return_id | Return ID to attach file to | formData | string | false | 550e8400-e29b-41d4-a716-446655440000 | |
| order_shipment_id | Order shipment ID to attach file to | formData | string | false | 550e8400-e29b-41d4-a716-446655440000 | |
| license_id | License ID to attach file to | formData | string | false | 550e8400-e29b-41d4-a716-446655440000 |
Responses
| Status | Description | Schema |
|---|---|---|
| 201 | File attachment inserted successfully | FileAttachment |
| 400 | Invalid parameters | |
| 422 | Storage quota exceeded or other validation error |
Inventory
Get inventory levels
GET /public/v1/inventory returns stock quantities filtered by product IDs
GET /public/v1/inventory?grouping[]=PRODUCT&product_ids[]=027699cd-728c-44b6-9ffb-a9da2f8f8835
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjYsImlhdCI6MTc3NDYyMzU2NiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMDRlOTQxMWEtZTM4Ny00ZDliLTgzODEtZjBlNzg4YTY4MTI0IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY1LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTQ1NCIsInR5cCI6ImFjY2VzcyJ9.vog1xTD5MDzhgx1_yp63IZnF0eKKfSv2CRUuYxfbxSQ
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: fdc035fa1db060000000000000000001-00c67e3f7d5448a5-0
{
"data": [
{
"active": "10.000000000",
"available": "10.000000000",
"cost_default_per_unit": null,
"cost_per_unit_actual": null,
"product_id": "027699cd-728c-44b6-9ffb-a9da2f8f8835",
"reserved": "0.000000000",
"total_cost_actual": null,
"total_cost_default": null,
"updated_datetime": "2026-03-27T14:59:26.224851Z"
}
],
"next_page": null
}
GET /public/v1/inventory returns stock quantities and costs grouped by product
GET /public/v1/inventory?grouping[]=PRODUCT
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjcsImlhdCI6MTc3NDYyMzU2NywiaXNzIjoiRGlzdHJ1IiwianRpIjoiMWIyZGVjMzItMDYzMS00OTIyLWIwZjUtYzMxMWQyYWYyMjdjIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY2LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTc1NyIsInR5cCI6ImFjY2VzcyJ9.OnV8OMcgotJAju1LDKzc0Sz4z0q7lQ2SilF2fOH45lo
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 26b371c2c71e58000000000000000001-0f90aa885c967aca-0
{
"data": [
{
"active": "50.000000000",
"available": "50.000000000",
"cost_default_per_unit": null,
"cost_per_unit_actual": null,
"product_id": "98cc97a0-7337-41b8-b69a-618fa14084d2",
"reserved": "0.000000000",
"total_cost_actual": null,
"total_cost_default": null,
"updated_datetime": "2026-03-27T14:59:28.149430Z"
},
{
"active": "100.000000000",
"available": "90.000000000",
"cost_default_per_unit": "2.06",
"cost_per_unit_actual": "0.03",
"product_id": "a44d16b4-4eb6-4625-aa43-c067a48ff11f",
"reserved": "10.000000000",
"total_cost_actual": "3",
"total_cost_default": "206",
"updated_datetime": "2026-03-27T14:59:28.228823Z"
},
{
"active": "95.000000000",
"available": "80.000000000",
"cost_default_per_unit": null,
"cost_per_unit_actual": null,
"product_id": "a650691a-4e63-4b31-afbf-dec136bf000d",
"reserved": "15.000000000",
"total_cost_actual": null,
"total_cost_default": null,
"updated_datetime": "2026-03-27T14:59:28.229745Z"
}
],
"next_page": null
}
GET /public/v1/inventory returns stock quantities and costs grouped by product & location
GET /public/v1/inventory?grouping[]=PRODUCT&grouping[]=LOCATION
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjYsImlhdCI6MTc3NDYyMzU2NiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMGQ5ZDY4ZDktOWE1YS00NTdiLWJkYjgtNzVmZDk3NzJkZTJkIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY1LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTQ4NiIsInR5cCI6ImFjY2VzcyJ9.pDyRjNLv_hg15gvQ1HusbERvE0I8iQ6S1AjnulD4EPw
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 61a27acc71a930000000000000000001-3be9ee579cd7db43-0
{
"data": [
{
"active": "100.000000000",
"available": "100.000000000",
"cost_default_per_unit": null,
"cost_per_unit_actual": null,
"location_id": "00000000-0000-0000-0000-00000000012a",
"product_id": "3a100b0b-2af6-4fa6-bc11-1d9fc08150cf",
"reserved": "0.000000000",
"total_cost_actual": null,
"total_cost_default": null,
"updated_datetime": "2026-03-27T14:59:26.400037Z"
},
{
"active": "30.000000000",
"available": "26.000000000",
"cost_default_per_unit": null,
"cost_per_unit_actual": null,
"location_id": null,
"product_id": "3a100b0b-2af6-4fa6-bc11-1d9fc08150cf",
"reserved": "4.000000000",
"total_cost_actual": null,
"total_cost_default": null,
"updated_datetime": "2026-03-27T14:59:26.723331Z"
},
{
"active": "0.000000000",
"available": "-15.000000000",
"cost_default_per_unit": null,
"cost_per_unit_actual": null,
"location_id": "00000000-0000-0000-0000-000000000129",
"product_id": "71c39633-46eb-4a68-a19c-df750ce34ba4",
"reserved": "15.000000000",
"total_cost_actual": null,
"total_cost_default": null,
"updated_datetime": "2026-03-27T14:59:26.719775Z"
},
{
"active": "0.000000000",
"available": "-8.000000000",
"cost_default_per_unit": null,
"cost_per_unit_actual": null,
"location_id": "00000000-0000-0000-0000-00000000012a",
"product_id": "71c39633-46eb-4a68-a19c-df750ce34ba4",
"reserved": "8.000000000",
"total_cost_actual": null,
"total_cost_default": null,
"updated_datetime": "2026-03-27T14:59:26.720834Z"
},
{
"active": "190.000000000",
"available": "169.000000000",
"cost_default_per_unit": "1",
"cost_per_unit_actual": "0.5",
"location_id": "00000000-0000-0000-0000-000000000133",
"product_id": "71c39633-46eb-4a68-a19c-df750ce34ba4",
"reserved": "21.000000000",
"total_cost_actual": "95",
"total_cost_default": "190",
"updated_datetime": "2026-03-27T14:59:26.721808Z"
},
{
"active": "80.000000000",
"available": "80.000000000",
"cost_default_per_unit": null,
"cost_per_unit_actual": null,
"location_id": "00000000-0000-0000-0000-000000000134",
"product_id": "71c39633-46eb-4a68-a19c-df750ce34ba4",
"reserved": "0.000000000",
"total_cost_actual": null,
"total_cost_default": null,
"updated_datetime": "2026-03-27T14:59:26.677882Z"
},
{
"active": "0.000000000",
"available": "-1.000000000",
"cost_default_per_unit": null,
"cost_per_unit_actual": null,
"location_id": null,
"product_id": "71c39633-46eb-4a68-a19c-df750ce34ba4",
"reserved": "1.000000000",
"total_cost_actual": null,
"total_cost_default": null,
"updated_datetime": "2026-03-27T14:59:26.723654Z"
},
{
"active": "100.000000000",
"available": "90.000000000",
"cost_default_per_unit": null,
"cost_per_unit_actual": null,
"location_id": "00000000-0000-0000-0000-000000000129",
"product_id": "d0473122-be92-4e9b-a58d-f6e32aee20e5",
"reserved": "10.000000000",
"total_cost_actual": null,
"total_cost_default": null,
"updated_datetime": "2026-03-27T14:59:26.716183Z"
},
{
"active": "0.000000000",
"available": "-1.000000000",
"cost_default_per_unit": null,
"cost_per_unit_actual": null,
"location_id": "00000000-0000-0000-0000-00000000012a",
"product_id": "d0473122-be92-4e9b-a58d-f6e32aee20e5",
"reserved": "1.000000000",
"total_cost_actual": null,
"total_cost_default": null,
"updated_datetime": "2026-03-27T14:59:26.718700Z"
}
],
"next_page": null
}
GET /public/v1/inventory returns stock quantities and costs grouped by product & batch number
GET /public/v1/inventory?grouping[]=PRODUCT&grouping[]=BATCH_NUMBER
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjYsImlhdCI6MTc3NDYyMzU2NiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMWExN2Y0MTAtYWFhMS00MmY2LWJkOTktMjg2OWYxZWVmNjY0IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY1LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTU2MCIsInR5cCI6ImFjY2VzcyJ9.i_2PwWRW--Rpn_Odo9dL5AUOXIt9-h2oNLKD9Mn1pkk
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 9a1525e20a58e0000000000000000001-53a26e3563625f88-0
{
"data": [
{
"active": "19.000000000",
"available": "19.000000000",
"batch_number": null,
"cost_default_per_unit": "2",
"cost_per_unit_actual": "1",
"product_id": "1f3a936d-7d31-4966-aef4-5ac2413037e6",
"reserved": "0.000000000",
"total_cost_actual": "19",
"total_cost_default": "38",
"updated_datetime": "2026-03-27T14:59:26.888064Z"
},
{
"active": "13.000000000",
"available": "13.000000000",
"batch_number": "TEST-1",
"cost_default_per_unit": null,
"cost_per_unit_actual": null,
"product_id": "1f3a936d-7d31-4966-aef4-5ac2413037e6",
"reserved": "0.000000000",
"total_cost_actual": null,
"total_cost_default": null,
"updated_datetime": "2026-03-27T14:59:26.941546Z"
},
{
"active": "8.000000000",
"available": "8.000000000",
"batch_number": "TEST-1",
"cost_default_per_unit": null,
"cost_per_unit_actual": null,
"product_id": "256c030b-50ae-462b-a607-55d45c79c89c",
"reserved": "0.000000000",
"total_cost_actual": null,
"total_cost_default": null,
"updated_datetime": "2026-03-27T14:59:26.972453Z"
},
{
"active": "26.000000000",
"available": "26.000000000",
"batch_number": null,
"cost_default_per_unit": null,
"cost_per_unit_actual": null,
"product_id": "6fb20705-a27e-4593-8274-8b9321735576",
"reserved": "0.000000000",
"total_cost_actual": null,
"total_cost_default": null,
"updated_datetime": "2026-03-27T14:59:27.305720Z"
},
{
"active": "27.000000000",
"available": "27.000000000",
"batch_number": "1",
"cost_default_per_unit": null,
"cost_per_unit_actual": null,
"product_id": "6fb20705-a27e-4593-8274-8b9321735576",
"reserved": "0.000000000",
"total_cost_actual": null,
"total_cost_default": null,
"updated_datetime": "2026-03-27T14:59:27.350506Z"
},
{
"active": "43.000000000",
"available": "43.000000000",
"batch_number": null,
"cost_default_per_unit": null,
"cost_per_unit_actual": null,
"product_id": "fdc3c5cd-bd67-409c-8e2b-b73304730b8a",
"reserved": "0.000000000",
"total_cost_actual": null,
"total_cost_default": null,
"updated_datetime": "2026-03-27T14:59:27.067422Z"
},
{
"active": "47.000000000",
"available": "47.000000000",
"batch_number": "1",
"cost_default_per_unit": null,
"cost_per_unit_actual": null,
"product_id": "fdc3c5cd-bd67-409c-8e2b-b73304730b8a",
"reserved": "0.000000000",
"total_cost_actual": null,
"total_cost_default": null,
"updated_datetime": "2026-03-27T14:59:27.171272Z"
},
{
"active": "25.000000000",
"available": "25.000000000",
"batch_number": "2",
"cost_default_per_unit": null,
"cost_per_unit_actual": null,
"product_id": "fdc3c5cd-bd67-409c-8e2b-b73304730b8a",
"reserved": "0.000000000",
"total_cost_actual": null,
"total_cost_default": null,
"updated_datetime": "2026-03-27T14:59:27.241770Z"
}
],
"next_page": null
}
GET /public/v1/inventory returns stock quantities grouped by product & location & batch number
GET /public/v1/inventory?grouping[]=PRODUCT&grouping[]=LOCATION&grouping[]=BATCH_NUMBER
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjUsImlhdCI6MTc3NDYyMzU2NSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiY2Y3MDBhYjQtMDZlMy00ZGUyLWFhYzEtMmViYzYyNTY2MDNmIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY0LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTMxMSIsInR5cCI6ImFjY2VzcyJ9.rtM09vjJ6GxenAxz0D8SZDdndbQsRsAbHOU8B5SWSsc
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 6dcfdfba70c264000000000000000001-db3258cc1646eea7-0
{
"data": [
{
"active": "41.000000000",
"available": "41.000000000",
"batch_number": null,
"cost_default_per_unit": null,
"cost_per_unit_actual": null,
"location_id": "00000000-0000-0000-0000-0000000000f9",
"product_id": "cd1bc5d9-85b3-4d0b-a49d-b1a1467792fa",
"reserved": "0.000000000",
"total_cost_actual": null,
"total_cost_default": null,
"updated_datetime": "2026-03-27T14:59:25.844452Z"
},
{
"active": "49.000000000",
"available": "49.000000000",
"batch_number": "TEST-1",
"cost_default_per_unit": null,
"cost_per_unit_actual": null,
"location_id": "00000000-0000-0000-0000-0000000000f9",
"product_id": "cd1bc5d9-85b3-4d0b-a49d-b1a1467792fa",
"reserved": "0.000000000",
"total_cost_actual": null,
"total_cost_default": null,
"updated_datetime": "2026-03-27T14:59:25.966983Z"
},
{
"active": "45.000000000",
"available": "45.000000000",
"batch_number": null,
"cost_default_per_unit": null,
"cost_per_unit_actual": null,
"location_id": "00000000-0000-0000-0000-0000000000fa",
"product_id": "cd1bc5d9-85b3-4d0b-a49d-b1a1467792fa",
"reserved": "0.000000000",
"total_cost_actual": null,
"total_cost_default": null,
"updated_datetime": "2026-03-27T14:59:25.908920Z"
},
{
"active": "53.000000000",
"available": "53.000000000",
"batch_number": "TEST-1",
"cost_default_per_unit": null,
"cost_per_unit_actual": null,
"location_id": "00000000-0000-0000-0000-0000000000fa",
"product_id": "cd1bc5d9-85b3-4d0b-a49d-b1a1467792fa",
"reserved": "0.000000000",
"total_cost_actual": null,
"total_cost_default": null,
"updated_datetime": "2026-03-27T14:59:26.032983Z"
},
{
"active": "21.000000000",
"available": "21.000000000",
"batch_number": null,
"cost_default_per_unit": null,
"cost_per_unit_actual": null,
"location_id": "00000000-0000-0000-0000-0000000000f9",
"product_id": "d3968dd9-e683-479c-9a61-40cf31bdeca9",
"reserved": "0.000000000",
"total_cost_actual": null,
"total_cost_default": null,
"updated_datetime": "2026-03-27T14:59:25.664300Z"
},
{
"active": "29.000000000",
"available": "29.000000000",
"batch_number": "TEST-1",
"cost_default_per_unit": null,
"cost_per_unit_actual": null,
"location_id": "00000000-0000-0000-0000-0000000000f9",
"product_id": "d3968dd9-e683-479c-9a61-40cf31bdeca9",
"reserved": "0.000000000",
"total_cost_actual": null,
"total_cost_default": null,
"updated_datetime": "2026-03-27T14:59:25.731547Z"
},
{
"active": "25.000000000",
"available": "25.000000000",
"batch_number": null,
"cost_default_per_unit": null,
"cost_per_unit_actual": null,
"location_id": "00000000-0000-0000-0000-0000000000fa",
"product_id": "d3968dd9-e683-479c-9a61-40cf31bdeca9",
"reserved": "0.000000000",
"total_cost_actual": null,
"total_cost_default": null,
"updated_datetime": "2026-03-27T14:59:25.695121Z"
},
{
"active": "33.000000000",
"available": "33.000000000",
"batch_number": "TEST-1",
"cost_default_per_unit": null,
"cost_per_unit_actual": null,
"location_id": "00000000-0000-0000-0000-0000000000fa",
"product_id": "d3968dd9-e683-479c-9a61-40cf31bdeca9",
"reserved": "0.000000000",
"total_cost_actual": null,
"total_cost_default": null,
"updated_datetime": "2026-03-27T14:59:25.764431Z"
}
],
"next_page": null
}
Get active and available quantities grouped by a specified list of attributes. Groups with 0 active and 0 available quantity won't be returned. Groups are sorted by the IDs of the attributes they are grouped by. Note: The page size for this endpoint is 5000 groups per page. This endpoint returns eventually consistent data, with changes taking up to 1 second to propagate in responses.
Request
GET /public/v1/inventory
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| grouping | Attributes to group inventory by. PRODUCT is required to be in the list. Accepted values are "BATCH_NUMBER", "LOCATION" and "PRODUCT". | query | array | false | ["PRODUCT","LOCATION"] | |
| page | Pagination information | query | number | false | ?page[number]=1 | |
| product_ids | Filter inventory levels by product IDs | query | array | false | ["67ae9080-8dc2-4ab7-9704-19673f4d9f21","213c7080-8dc2-4ab7-9704-19673f4d9f22"] | |
| location_ids | Filter inventory levels by location IDs | query | array | false | ["00000000-0000-0000-0000-000000000001","00000000-0000-0000-0000-000000000002"] | |
| batch_ids | Filter inventory levels by batch IDs | query | array | false | ["00000000-0000-0000-0000-000000000101","00000000-0000-0000-0000-000000000102"] |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | A list of active and available quantity for each group | Inventories |
Invoice
Get invoices
GET /invoices/ returns invoices related to the access token's company
GET /public/v1/invoices
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjYsImlhdCI6MTc3NDYyMzU2NiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiN2RiZTA1ZTAtN2M5Zi00OWZlLTlhZjctY2FiMTQ2Y2ZjMmE0IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY1LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTUwMiIsInR5cCI6ImFjY2VzcyJ9.IcCNCan_c3i-IAY8Cce8lOj2DlE8XehvtUShUzcxeJc
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: c4244761b368e8000000000000000001-4eb5498e36455e14-0
{
"data": [
{
"charges": [],
"company": {
"id": "00000000-0000-0000-0000-000000000316",
"name": "Company 1113",
"updated_datetime": "2026-03-27T14:59:26.616285Z"
},
"creator": {
"banned": false,
"deleted_at": null,
"email": "owner-1512@example.com",
"full_name": "FirstName3078 LastName3079",
"id": "00000000-0000-0000-0000-0000000005fc",
"role": {
"id": "00000000-0000-0000-0000-0000000005cf",
"name": "Admin 1482"
}
},
"custom_data": [
{
"id": 42,
"name": "Custom Field 19",
"value": null
}
],
"due_datetime": "2026-03-27T14:59:26.698230Z",
"id": "00000000-0000-0000-0000-00000000001a",
"inserted_datetime": "2026-03-27T14:59:26.698741Z",
"invoice_datetime": "2026-03-27T14:59:26.698229Z",
"invoice_number": "Invoice #23",
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-000000000248",
"name": "B1760"
},
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "00000000-0000-0000-0000-00000000002c",
"order_item_id": "46c438ce-6612-42e6-ab10-73bba3b3409b",
"package": null,
"price": "10.000000000",
"product": {
"id": "3547d0ee-29fe-48f9-8d85-3389739ccd54",
"name": "Product 1758",
"sku": "sku 1759",
"updated_datetime": "2026-03-27T14:59:26.627280Z"
},
"quantity": "10.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-00000000024a",
"name": "B1772"
},
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "00000000-0000-0000-0000-00000000002d",
"order_item_id": "d238cb72-54cb-452e-a43e-3a44db57beeb",
"package": null,
"price": "10.000000000",
"product": {
"id": "9d6f99d3-5235-41c3-a858-f375a112a1c4",
"name": "Product 1770",
"sku": "sku 1771",
"updated_datetime": "2026-03-27T14:59:26.641524Z"
},
"quantity": "10.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
}
],
"order": {
"id": "020e336d-f903-48d7-9442-b0a688c5f751",
"order_number": "SO-42",
"status": "Pending",
"total": "320.00"
},
"owner": {
"banned": false,
"deleted_at": null,
"email": "owner-1512@example.com",
"full_name": "FirstName3078 LastName3079",
"id": "00000000-0000-0000-0000-0000000005fc",
"role": {
"id": "00000000-0000-0000-0000-0000000005cf",
"name": "Admin 1482"
}
},
"paid_amount": "0.0",
"remaining_amount": "200.00",
"status": "NOT_PAID",
"total": "200.00",
"updated_datetime": "2026-03-27T14:59:26.698741Z"
},
{
"charges": [
{
"id": "23769e89-b179-463c-a604-7a8b6080609c",
"name": "C1",
"percent": "10.0000",
"price": "1.00",
"type": "CHARGE",
"unit_type": "PERCENT"
}
],
"company": {
"id": "00000000-0000-0000-0000-0000000002fd",
"name": "Company 1087",
"updated_datetime": "2026-03-27T14:59:26.441593Z"
},
"creator": {
"banned": false,
"deleted_at": null,
"email": "user1@a.com",
"full_name": "John Foo",
"id": "00000000-0000-0000-0000-0000000005da",
"role": {
"id": "00000000-0000-0000-0000-0000000005af",
"name": "Admin 1450"
}
},
"custom_data": [
{
"id": 42,
"name": "Custom Field 19",
"value": "Custom Field Value 1"
}
],
"due_datetime": "2020-01-01T00:00:01.000000Z",
"id": "00000000-0000-0000-0000-000000000019",
"inserted_datetime": "2026-03-27T14:59:26.475754Z",
"invoice_datetime": "2020-01-01T00:00:02.000000Z",
"invoice_number": "INV-123",
"items": [
{
"batch": {
"batch_number": "UID1",
"id": "00000000-0000-0000-0000-000000000231",
"name": "B1"
},
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "00000000-0000-0000-0000-00000000002b",
"order_item_id": "780b769a-1d7a-49eb-8014-54de4de442d6",
"package": {
"batch_number": "B1",
"compliance_label": "ABCDEF012345670000000141",
"id": "00000000-0000-0000-0000-000000000048",
"metrc_label": "ABCDEF012345670000000141",
"status": "active"
},
"price": "10.000000000",
"product": {
"id": "abdf4208-9c6d-418a-a6b8-ba55ef96fed6",
"name": "P1",
"sku": "SKU1",
"updated_datetime": "2026-03-27T14:59:26.413233Z"
},
"quantity": "1.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
}
],
"order": {
"id": "fda43eb9-3111-4654-ac49-267429adbfd1",
"order_number": "SO-123",
"status": "Completed",
"total": "10.00"
},
"owner": {
"banned": false,
"deleted_at": null,
"email": "user2@a.com",
"full_name": "John Bar",
"id": "00000000-0000-0000-0000-0000000005dc",
"role": {
"id": "00000000-0000-0000-0000-0000000005b1",
"name": "Admin 1452"
}
},
"paid_amount": "5.00",
"remaining_amount": "3.00",
"status": "PARTIALLY_PAID",
"total": "8.00",
"updated_datetime": "2026-03-27T14:59:26.514842Z"
}
],
"next_page": null
}
GET /invoices/ returns cost/returned_quantity data for invoice items
GET /public/v1/invoices
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjQsImlhdCI6MTc3NDYyMzU2NCwiaXNzIjoiRGlzdHJ1IiwianRpIjoiODA1YzUyNjctNzcyYi00OGM1LWJjNTQtMjgxYjNkNjcyYmFlIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYzLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6OTk2IiwidHlwIjoiYWNjZXNzIn0.Q19KFSyBkkoV6mbYteLSfgjRwuzL44Ig4X1XT-gx3Gc
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: ed86a61b0a9620000000000000000001-ada0a71bbe2efb69-0
{
"data": [
{
"charges": [],
"company": {
"id": "00000000-0000-0000-0000-0000000001f0",
"name": "Company 769",
"updated_datetime": "2026-03-27T14:59:24.359079Z"
},
"creator": {
"banned": false,
"deleted_at": null,
"email": "owner-1073@example.com",
"full_name": "FirstName2200 LastName2201",
"id": "00000000-0000-0000-0000-00000000043c",
"role": {
"id": "00000000-0000-0000-0000-000000000421",
"name": "Admin 1052"
}
},
"custom_data": [],
"due_datetime": "2026-03-27T14:59:24.485488Z",
"id": "00000000-0000-0000-0000-00000000000b",
"inserted_datetime": "2026-03-27T14:59:24.486048Z",
"invoice_datetime": "2026-03-27T14:59:24.485487Z",
"invoice_number": "Invoice #9",
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-000000000120",
"name": "B986"
},
"cost_per_unit": "10.026",
"cost_per_unit_default": "5",
"id": "00000000-0000-0000-0000-000000000011",
"order_item_id": "f1355b8e-10a3-46e5-8b52-feee9982e550",
"package": null,
"price": "64952.000000000",
"product": {
"id": "1e677450-4656-49fa-a916-11ded8a0e36a",
"name": "Product 983",
"sku": "sku 984",
"updated_datetime": "2026-03-27T14:59:24.259939Z"
},
"quantity": "2.000000000",
"returned_quantity": "2",
"total_cost_actual": "20.052",
"total_cost_default": "10"
}
],
"order": {
"id": "5b187bb9-8b0a-4ddc-afb1-0ab75903c44b",
"order_number": "SO-0000001",
"status": "Processing",
"total": "129904.00"
},
"owner": {
"banned": false,
"deleted_at": null,
"email": "owner-1073@example.com",
"full_name": "FirstName2200 LastName2201",
"id": "00000000-0000-0000-0000-00000000043c",
"role": {
"id": "00000000-0000-0000-0000-000000000421",
"name": "Admin 1052"
}
},
"paid_amount": "0.0",
"remaining_amount": "32.00",
"status": "NOT_PAID",
"total": "32.00",
"updated_datetime": "2026-03-27T14:59:24.486048Z"
}
],
"next_page": null
}
GET /invoices/ allows filtering by several statuses
GET /public/v1/invoices?status[]=Fully+Paid&status[]=Not+Paid
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjksImlhdCI6MTc3NDYyMzU2OSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiOGNjODE0MjAtMDFkMS00M2U3LWI3NDMtMWY5ZDBlMzQ0ZmQ0IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY4LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTk1NCIsInR5cCI6ImFjY2VzcyJ9.rHQuXK8_dRZwLGHWufUic3aB4DJLGIgU7VsGOCKVNy4
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 1709cd0e5c4090000000000000000001-6412cb06e4ac9f39-0
{
"data": [
{
"charges": [],
"company": {
"id": "00000000-0000-0000-0000-000000000470",
"name": "Company 1510",
"updated_datetime": "2026-03-27T14:59:30.213264Z"
},
"creator": {
"banned": false,
"deleted_at": null,
"email": "owner-1953@example.com",
"full_name": "FirstName3960 LastName3961",
"id": "00000000-0000-0000-0000-0000000007c1",
"role": {
"id": "00000000-0000-0000-0000-00000000078b",
"name": "Admin 1926"
}
},
"custom_data": [],
"due_datetime": "2026-03-27T14:59:30.283993Z",
"id": "00000000-0000-0000-0000-00000000003f",
"inserted_datetime": "2026-03-27T14:59:30.284601Z",
"invoice_datetime": "2020-01-01T12:30:00.000000Z",
"invoice_number": "Invoice #56",
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-00000000035e",
"name": "B2586"
},
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "00000000-0000-0000-0000-000000000062",
"order_item_id": "5d2b9fb9-a297-4fd5-a609-553e3630127c",
"package": null,
"price": "10.000000000",
"product": {
"id": "e6281330-c56f-4f1d-b108-75d6af1616b7",
"name": "Product 2584",
"sku": "sku 2585",
"updated_datetime": "2026-03-27T14:59:30.222634Z"
},
"quantity": "10.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-00000000035f",
"name": "B2589"
},
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "00000000-0000-0000-0000-000000000063",
"order_item_id": "9f2dd7f0-78a3-4a22-8f6d-923cf623bcf9",
"package": null,
"price": "10.000000000",
"product": {
"id": "20f34b5f-a160-4298-bc98-c113f50b0eaa",
"name": "Product 2587",
"sku": "sku 2588",
"updated_datetime": "2026-03-27T14:59:30.231255Z"
},
"quantity": "10.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
}
],
"order": {
"id": "0b19885f-ccb1-4b49-a587-f84961960d1a",
"order_number": "SO-100",
"status": "Pending",
"total": "320.00"
},
"owner": {
"banned": false,
"deleted_at": null,
"email": "owner-1953@example.com",
"full_name": "FirstName3960 LastName3961",
"id": "00000000-0000-0000-0000-0000000007c1",
"role": {
"id": "00000000-0000-0000-0000-00000000078b",
"name": "Admin 1926"
}
},
"paid_amount": "0.0",
"remaining_amount": "200.00",
"status": "NOT_PAID",
"total": "200.00",
"updated_datetime": "2026-03-27T14:59:30.284601Z"
},
{
"charges": [],
"company": {
"id": "00000000-0000-0000-0000-00000000046a",
"name": "Company 1504",
"updated_datetime": "2026-03-27T14:59:30.145404Z"
},
"creator": {
"banned": false,
"deleted_at": null,
"email": "owner-1947@example.com",
"full_name": "FirstName3948 LastName3949",
"id": "00000000-0000-0000-0000-0000000007bb",
"role": {
"id": "00000000-0000-0000-0000-000000000785",
"name": "Admin 1920"
}
},
"custom_data": [],
"due_datetime": "2026-03-27T14:59:30.189287Z",
"id": "00000000-0000-0000-0000-00000000003e",
"inserted_datetime": "2026-03-27T14:59:30.189880Z",
"invoice_datetime": "2020-01-01T12:20:00.000000Z",
"invoice_number": "Invoice #55",
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-000000000359",
"name": "B2571"
},
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "00000000-0000-0000-0000-000000000060",
"order_item_id": "c812b519-6215-4c62-bcb4-a3f3dd763f8e",
"package": null,
"price": "10.000000000",
"product": {
"id": "b6b01a6d-76e9-4a75-90a7-65caed2e57ec",
"name": "Product 2569",
"sku": "sku 2570",
"updated_datetime": "2026-03-27T14:59:30.151569Z"
},
"quantity": "10.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-00000000035a",
"name": "B2574"
},
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "00000000-0000-0000-0000-000000000061",
"order_item_id": "8fb8a791-0ba0-40c7-9462-b3be12a03d41",
"package": null,
"price": "10.000000000",
"product": {
"id": "ab93606e-370b-4d58-915c-79a1660c7d4b",
"name": "Product 2572",
"sku": "sku 2573",
"updated_datetime": "2026-03-27T14:59:30.157027Z"
},
"quantity": "10.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
}
],
"order": {
"id": "feacdc03-cea3-4e87-af15-d06b93da3c15",
"order_number": "SO-99",
"status": "Pending",
"total": "320.00"
},
"owner": {
"banned": false,
"deleted_at": null,
"email": "owner-1947@example.com",
"full_name": "FirstName3948 LastName3949",
"id": "00000000-0000-0000-0000-0000000007bb",
"role": {
"id": "00000000-0000-0000-0000-000000000785",
"name": "Admin 1920"
}
},
"paid_amount": "0.0",
"remaining_amount": "200.00",
"status": "FULLY_PAID",
"total": "200.00",
"updated_datetime": "2026-03-27T14:59:30.189880Z"
},
{
"charges": [],
"company": {
"id": "00000000-0000-0000-0000-000000000458",
"name": "Company 1483",
"updated_datetime": "2026-03-27T14:59:29.946928Z"
},
"creator": {
"banned": false,
"deleted_at": null,
"email": "owner-1926@example.com",
"full_name": "FirstName3906 LastName3907",
"id": "00000000-0000-0000-0000-0000000007a3",
"role": {
"id": "00000000-0000-0000-0000-00000000076d",
"name": "Admin 1896"
}
},
"custom_data": [],
"due_datetime": "2026-03-27T14:59:30.017105Z",
"id": "00000000-0000-0000-0000-00000000003c",
"inserted_datetime": "2026-03-27T14:59:30.017736Z",
"invoice_datetime": "2020-01-01T12:00:00.000000Z",
"invoice_number": "Invoice #53",
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-00000000034c",
"name": "B2532"
},
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "00000000-0000-0000-0000-00000000005c",
"order_item_id": "11d4af01-6890-4656-8a96-203aed0230af",
"package": null,
"price": "10.000000000",
"product": {
"id": "ab0974fc-a5c2-48bc-858e-5c55934c7467",
"name": "Product 2530",
"sku": "sku 2531",
"updated_datetime": "2026-03-27T14:59:29.958447Z"
},
"quantity": "10.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-00000000034d",
"name": "B2535"
},
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "00000000-0000-0000-0000-00000000005d",
"order_item_id": "8a34e88e-e6d0-41ef-b0fc-1c698d49e222",
"package": null,
"price": "10.000000000",
"product": {
"id": "b13eb102-fe72-4523-9931-6f0016e449a2",
"name": "Product 2533",
"sku": "sku 2534",
"updated_datetime": "2026-03-27T14:59:29.971354Z"
},
"quantity": "10.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
}
],
"order": {
"id": "751097a1-27d4-4b01-bac0-29b0f0a1648f",
"order_number": "SO-95",
"status": "Pending",
"total": "320.00"
},
"owner": {
"banned": false,
"deleted_at": null,
"email": "owner-1926@example.com",
"full_name": "FirstName3906 LastName3907",
"id": "00000000-0000-0000-0000-0000000007a3",
"role": {
"id": "00000000-0000-0000-0000-00000000076d",
"name": "Admin 1896"
}
},
"paid_amount": "0.0",
"remaining_amount": "200.00",
"status": "FULLY_PAID",
"total": "200.00",
"updated_datetime": "2026-03-27T14:59:30.017736Z"
}
],
"next_page": null
}
GET /invoices/:id returns cost/returned_quantity data for invoice items
GET /public/v1/invoices
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjgsImlhdCI6MTc3NDYyMzU2OCwiaXNzIjoiRGlzdHJ1IiwianRpIjoiYzhmYzcyODktNDYzOS00MDJjLTlmNDgtYTlmM2U2YzVlNThkIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY3LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTgxOSIsInR5cCI6ImFjY2VzcyJ9.XX5PDCRXI1jeGPZb1aqypfFj3Qyvv6PPKEbZlpfhWqY
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 85526517664b08000000000000000001-90d5680efd7280fe-0
{
"data": [
{
"charges": [],
"company": {
"id": "00000000-0000-0000-0000-0000000003e1",
"name": "Company 1350",
"updated_datetime": "2026-03-27T14:59:28.603569Z"
},
"creator": {
"banned": false,
"deleted_at": null,
"email": "owner-1802@example.com",
"full_name": "FirstName3658 LastName3659",
"id": "00000000-0000-0000-0000-000000000724",
"role": {
"id": "00000000-0000-0000-0000-0000000006ee",
"name": "Admin 1769"
}
},
"custom_data": [],
"due_datetime": "2026-03-27T14:59:28.687901Z",
"id": "00000000-0000-0000-0000-00000000002a",
"inserted_datetime": "2026-03-27T14:59:28.688183Z",
"invoice_datetime": "2026-03-27T14:59:28.687900Z",
"invoice_number": "Invoice #37",
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000002f0",
"name": "B2254"
},
"cost_per_unit": "10.026",
"cost_per_unit_default": "5",
"id": "00000000-0000-0000-0000-000000000049",
"order_item_id": "888e4174-e37d-4745-b3b3-d2fcc236c127",
"package": null,
"price": "609307.000000000",
"product": {
"id": "14b36965-f247-4a35-b91e-77bc25f32557",
"name": "Product 2252",
"sku": "sku 2253",
"updated_datetime": "2026-03-27T14:59:28.578190Z"
},
"quantity": "1.000000000",
"returned_quantity": "1",
"total_cost_actual": "10.026",
"total_cost_default": "5"
}
],
"order": {
"id": "a1aaa1d7-caa1-434a-86b7-7cd12c2efbc2",
"order_number": "SO-0000001",
"status": "Processing",
"total": "1218614.00"
},
"owner": {
"banned": false,
"deleted_at": null,
"email": "owner-1802@example.com",
"full_name": "FirstName3658 LastName3659",
"id": "00000000-0000-0000-0000-000000000724",
"role": {
"id": "00000000-0000-0000-0000-0000000006ee",
"name": "Admin 1769"
}
},
"paid_amount": "0.0",
"remaining_amount": "32.00",
"status": "NOT_PAID",
"total": "32.00",
"updated_datetime": "2026-03-27T14:59:28.688183Z"
}
],
"next_page": null
}
Get invoices sorted by Invoice Date descendingly date and filtered by various attributes
Note: The page size for this endpoint is 500 invoices per page. This endpoint returns eventually consistent data, with changes taking up to 1 second to propagate in responses.
Request
GET /public/v1/invoices
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| due_datetime | Filter invoices by the due datetime | query | string | false | ,2022-07-10T00:00:00Z | |
| inserted_datetime | Filter invoices by their creation datetime | query | string | false | 2022-07-10T00:00:00Z,2022-07-11T00:00:00Z | |
| invoice_datetime | Filter invoices by the invoice datetime | query | string | false | 2022-07-10T00:00:00Z, | |
| invoice_number | Filter invoices by whether their invoice number contains the given string | query | string | false | 001 | |
| order_id | Filter invoices by order IDs | query | array | false | ["67ae9080-8dc2-4ab7-9704-19673f4d9f21","213c7080-8dc2-4ab7-9704-19673f4d9f22"] | |
| page | Pagination information | query | number | false | ?page[number]=1 | |
| status | Filter invoices by their status. Accepted values are "Not Paid", "Over Paid", "Fully Paid" and "Partially Paid". | query | array | false | ["Not Paid","Over Paid"] | |
| updated_datetime | Filter invoices by the datetime they were most recently modified | query | string | false | ,2022-07-10T00:00:00Z |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | A list of invoices | Invoices |
Insert a payment for an invoice
POST /invoices/:id/payments can create a payment for an invoice with both quickbooks id and name
POST /public/v1/invoices/00000000-0000-0000-0000-000000000006/payments
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiNjI2MzVlYzMtMzYwNi00OGVlLWEzMWQtNWY3YjVmNGQ3NDFkIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NzY1IiwidHlwIjoiYWNjZXNzIn0.CChFXK04sbsag8ogHxqqcuKskM0ZSCsYXqcWDZv52Dk
{
"amount": 100.01,
"description": "Payment for invoice",
"payment_datetime": "2020-01-01T00:00:00.000000Z",
"payment_method_id": "00000000-0000-0000-0000-000000000008",
"quickbooks_deposit_account_id": "QBD-123"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 4ccb7ce9f21878000000000000000001-1cd47fc26abdd89d-0
{
"data": {
"amount": "100",
"description": "Payment for invoice",
"id": "00000000-0000-0000-0000-000000000002",
"inserted_datetime": "2026-03-27T14:59:23.521101Z",
"invoice_id": "00000000-0000-0000-0000-000000000006",
"payment_date": "2020-01-01T00:00:00.000000Z",
"payment_method": {
"deleted_at": null,
"id": "00000000-0000-0000-0000-000000000008",
"name": "Payment Method 0"
},
"payment_number": "PYT-0000001",
"quickbooks_deposit_account_id": "QBD-123"
}
}
POST /invoices/:id/payments can create a payment for an invoice with both quickbooks id and name
POST /public/v1/invoices/00000000-0000-0000-0000-000000000006/payments
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiNjI2MzVlYzMtMzYwNi00OGVlLWEzMWQtNWY3YjVmNGQ3NDFkIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NzY1IiwidHlwIjoiYWNjZXNzIn0.CChFXK04sbsag8ogHxqqcuKskM0ZSCsYXqcWDZv52Dk
{
"amount": 100.01,
"description": "Payment for invoice",
"payment_datetime": "2020-01-01T00:00:00.000000Z",
"payment_method_id": "00000000-0000-0000-0000-000000000008",
"quickbooks_deposit_account_name": "QBD-NAME"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 4ccb7ce9f21878000000000000000001-63a8c46232e802e9-0
{
"data": {
"amount": "100",
"description": "Payment for invoice",
"id": "00000000-0000-0000-0000-000000000003",
"inserted_datetime": "2026-03-27T14:59:23.649144Z",
"invoice_id": "00000000-0000-0000-0000-000000000006",
"payment_date": "2020-01-01T00:00:00.000000Z",
"payment_method": {
"deleted_at": null,
"id": "00000000-0000-0000-0000-000000000008",
"name": "Payment Method 0"
},
"payment_number": "PYT-0000002",
"quickbooks_deposit_account_id": "QBD-123"
}
}
Request
POST /public/v1/invoices/{id}/payments
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| payment_method_id | Payment method ID | query | string | true | ||
| amount | Amount of the payment. Will round to 2 decimal places | query | decimal | true | ||
| payment_datetime | Payment date | query | string | true | ||
| description | Description of the payment | query | string | true | ||
| quickbooks_deposit_account_id | Quickbooks deposit account ID. Cannot include both this and quickbooks_deposit_account_name. If user's company is integrated with Quickbooks, either this or quickbooks_deposit_account_name must be provided. Account type must be "Bank" or "Other Current Asset" | query | string | false | ||
| quickbooks_deposit_account_name | Quickbooks deposit account name. Cannot include both this and quickbooks_deposit_account_id. If user's company is integrated with Quickbooks, either this or quickbooks_deposit_account_id must be provided. Account type must be "Bank" or "Other Current Asset" | query | string | false |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | A single payment | InvoicePayment |
Get an invoice
GET /invoices/:id returns the expected invoice
GET /public/v1/invoices/00000000-0000-0000-0000-000000000003
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiZjM0MDQ4MDMtYmZmZi00N2Q3LWI5OGYtZTVhYTI3OWM0YmE0IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NDc5IiwidHlwIjoiYWNjZXNzIn0.GrcWL1Y56eZ5HFGPV7sXXYKQfkLHvvB7AY6CZcTop6M
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 551b79f9f7596c000000000000000001-8102a99bdaebb102-0
{
"data": {
"charges": [],
"company": {
"id": "00000000-0000-0000-0000-0000000000e4",
"name": "Company 387",
"updated_datetime": "2026-03-27T14:59:22.646878Z"
},
"creator": {
"banned": false,
"deleted_at": null,
"email": "owner-477@example.com",
"full_name": "FirstName992 LastName993",
"id": "00000000-0000-0000-0000-0000000001e4",
"role": {
"id": "00000000-0000-0000-0000-0000000001df",
"name": "Admin 474"
}
},
"custom_data": [
{
"id": 28,
"name": "Custom Field 5",
"value": "Custom Field Value 1"
}
],
"due_datetime": "2026-03-27T14:59:22.787045Z",
"id": "00000000-0000-0000-0000-000000000003",
"inserted_datetime": "2026-03-27T14:59:22.787871Z",
"invoice_datetime": "2026-03-27T14:59:22.787043Z",
"invoice_number": "Invoice #1",
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-000000000068",
"name": "B411"
},
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "00000000-0000-0000-0000-000000000003",
"order_item_id": "64be8354-bff1-4b08-88e4-6f5265a6f82c",
"package": null,
"price": "10.000000000",
"product": {
"id": "61596e13-9302-4fc8-92d9-84d294fa52f7",
"name": "Product 409",
"sku": "sku 410",
"updated_datetime": "2026-03-27T14:59:22.666869Z"
},
"quantity": "10.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-00000000006a",
"name": "B415"
},
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "00000000-0000-0000-0000-000000000004",
"order_item_id": "ebba3db5-9fc3-4e77-9173-99d0107e6c1d",
"package": null,
"price": "10.000000000",
"product": {
"id": "4655c650-ea0d-43ae-8efe-3480f7b11b12",
"name": "Product 413",
"sku": "sku 414",
"updated_datetime": "2026-03-27T14:59:22.694426Z"
},
"quantity": "10.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
}
],
"order": {
"id": "0a464e5b-063e-433c-89fb-b5430e746f05",
"order_number": "SO-3",
"status": "Pending",
"total": "320.00"
},
"owner": {
"banned": false,
"deleted_at": null,
"email": "owner-477@example.com",
"full_name": "FirstName992 LastName993",
"id": "00000000-0000-0000-0000-0000000001e4",
"role": {
"id": "00000000-0000-0000-0000-0000000001df",
"name": "Admin 474"
}
},
"paid_amount": "0.0",
"remaining_amount": null,
"status": "NOT_PAID",
"total": "200.00",
"updated_datetime": "2026-03-27T14:59:22.787871Z"
}
}
Get a single invoice given the ID
Request
GET /public/v1/invoices/{id}
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| id | Unique ID for an invoice | path | string | true |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | An invoice | Invoice |
Upsert an invoice
POST /invoices creates an invoice
POST /public/v1/invoices
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjEsImlhdCI6MTc3NDYyMzU2MSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiNzFiM2IyYzItZjMyMi00YTAxLWE3YTMtMjdjZDU3NjAxNmU4IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYwLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTE3IiwidHlwIjoiYWNjZXNzIn0.XDIBbVqtFMECFnUeveoof72xY5ThFdE31Zs2z5LS7us
{
"billing_location_id": "00000000-0000-0000-0000-000000000012",
"charges": [
{
"name": "C1",
"percent": "10.0000",
"type": "CHARGE",
"unit_type": "PERCENT"
},
{
"name": "C2",
"price": "-5.0000",
"type": "DISCOUNT",
"unit_type": "PRICE"
}
],
"due_datetime": "2020-01-30T00:00:01.000000Z",
"invoice_datetime": "2020-01-01T00:00:00.000000Z",
"items": [
{
"order_item_id": "fc158b47-9569-4349-84af-5d7d42a95d6a",
"quantity": "1.000000000"
},
{
"order_item_id": "cec901f9-b5a2-4b5e-a499-e1f40ac8ad5f",
"quantity": "10.000000000"
}
],
"order_id": "77886afd-c969-4e96-ae13-c01e133835ff"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 90273ede1757b8000000000000000001-09fb56e3d8491fcc-0
{
"data": {
"charges": [
{
"id": "87e02ff4-6677-4e77-814b-5eb77f56c9c4",
"name": "C1",
"percent": "10.0000",
"price": "5.30",
"type": "CHARGE",
"unit_type": "PERCENT"
},
{
"id": "904434b6-57b3-435a-a3c9-04f37c3da8f9",
"name": "C2",
"percent": null,
"price": "-5.00",
"type": "DISCOUNT",
"unit_type": "PRICE"
}
],
"company": {
"id": "00000000-0000-0000-0000-00000000002f",
"name": "Company 84",
"updated_datetime": "2026-03-27T14:59:21.507767Z"
},
"creator": {
"banned": false,
"deleted_at": null,
"email": "user1@a.com",
"full_name": "John Foo",
"id": "00000000-0000-0000-0000-000000000075",
"role": {
"id": "00000000-0000-0000-0000-000000000074",
"name": "Admin 111"
}
},
"custom_data": [],
"due_datetime": "2020-01-30T00:00:01.000000Z",
"id": "00000000-0000-0000-0000-000000000001",
"inserted_datetime": "2026-03-27T14:59:22.038522Z",
"invoice_datetime": "2020-01-01T00:00:00.000000Z",
"invoice_number": "INV-0000001",
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-00000000001a",
"name": "B1"
},
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "00000000-0000-0000-0000-000000000001",
"order_item_id": "fc158b47-9569-4349-84af-5d7d42a95d6a",
"package": null,
"price": "3.000000000",
"product": {
"id": "fcd66f8c-5683-489d-9e3f-b0bdb4e5818e",
"name": "P1",
"sku": "SKU1",
"updated_datetime": "2026-03-27T14:59:21.536545Z"
},
"quantity": "1.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-00000000001c",
"name": "B2"
},
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "00000000-0000-0000-0000-000000000002",
"order_item_id": "cec901f9-b5a2-4b5e-a499-e1f40ac8ad5f",
"package": null,
"price": "5.000000000",
"product": {
"id": "c5083ce0-7906-472c-a861-2c845c321446",
"name": "P2",
"sku": "SKU2",
"updated_datetime": "2026-03-27T14:59:21.553446Z"
},
"quantity": "10.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
}
],
"order": {
"id": "77886afd-c969-4e96-ae13-c01e133835ff",
"order_number": "SO-1",
"status": "Processing",
"total": "0.00"
},
"owner": null,
"paid_amount": "0.0",
"remaining_amount": "53.30",
"status": "NOT_PAID",
"total": "53.30",
"updated_datetime": "2026-03-27T14:59:22.136015Z"
}
}
POST /invoices updates an invoice
POST /public/v1/invoices
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjUsImlhdCI6MTc3NDYyMzU2NSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiYjI0NWJjNmEtNjlkZS00MjQ0LWFmZjgtYzU4OTRkNzA1Y2I3IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY0LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTIyNyIsInR5cCI6ImFjY2VzcyJ9.Q0r38lpi7RTY95OWv_TxZ7i2ScW5hC6B_XfHkFQFAXU
{
"billing_location_id": "00000000-0000-0000-0000-0000000000e3",
"charges": [
{
"name": "C1",
"percent": "10.0000",
"type": "CHARGE",
"unit_type": "PERCENT"
},
{
"name": "C2",
"price": "-5.0000",
"type": "DISCOUNT",
"unit_type": "PRICE"
}
],
"due_datetime": "2020-01-30T00:00:01.000000Z",
"invoice_datetime": "2020-01-01T00:00:00.000000Z",
"items": [
{
"order_item_id": "ae782188-6740-464f-8bf3-43906473321a",
"quantity": "1.000000000"
},
{
"order_item_id": "86223c48-8e9c-4ed2-8d7c-0c39c3261601",
"quantity": "10.000000000"
}
],
"order_id": "bbf45a02-08f6-4b5e-b590-f9cbca8e011a"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: ec2da31c2e2de0000000000000000001-d1ed4dc8d993b584-0
{
"data": {
"charges": [
{
"id": "71dccf9e-8597-4f0e-9bdf-d14f008bd017",
"name": "C1",
"percent": "10.0000",
"price": "5.30",
"type": "CHARGE",
"unit_type": "PERCENT"
},
{
"id": "c95aaefb-3eb7-468d-aaa3-4d9ba7a1bdf1",
"name": "C2",
"percent": null,
"price": "-5.00",
"type": "DISCOUNT",
"unit_type": "PRICE"
}
],
"company": {
"id": "00000000-0000-0000-0000-00000000024b",
"name": "Company 872",
"updated_datetime": "2026-03-27T14:59:25.103285Z"
},
"creator": {
"banned": false,
"deleted_at": null,
"email": "user1@a.com",
"full_name": "John Foo",
"id": "00000000-0000-0000-0000-0000000004cb",
"role": {
"id": "00000000-0000-0000-0000-0000000004ab",
"name": "Admin 1190"
}
},
"custom_data": [],
"due_datetime": "2020-01-30T00:00:01.000000Z",
"id": "00000000-0000-0000-0000-00000000000f",
"inserted_datetime": "2026-03-27T14:59:25.178637Z",
"invoice_datetime": "2020-01-01T00:00:00.000000Z",
"invoice_number": "INV-0000001",
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000001a4",
"name": "B1"
},
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "00000000-0000-0000-0000-000000000018",
"order_item_id": "ae782188-6740-464f-8bf3-43906473321a",
"package": null,
"price": "3.000000000",
"product": {
"id": "26ffee98-f355-4eff-bb3c-69d166334fae",
"name": "P1",
"sku": "SKU1",
"updated_datetime": "2026-03-27T14:59:25.119709Z"
},
"quantity": "1.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000001a9",
"name": "B2"
},
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "00000000-0000-0000-0000-000000000019",
"order_item_id": "86223c48-8e9c-4ed2-8d7c-0c39c3261601",
"package": null,
"price": "5.000000000",
"product": {
"id": "566d2ca3-20a1-4cbe-9347-a1db4475ee9b",
"name": "P2",
"sku": "SKU2",
"updated_datetime": "2026-03-27T14:59:25.131282Z"
},
"quantity": "10.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
}
],
"order": {
"id": "bbf45a02-08f6-4b5e-b590-f9cbca8e011a",
"order_number": "SO-23",
"status": "Processing",
"total": "0.00"
},
"owner": null,
"paid_amount": "0.0",
"remaining_amount": "53.30",
"status": "NOT_PAID",
"total": "53.30",
"updated_datetime": "2026-03-27T14:59:25.191284Z"
}
}
POST /invoices updates an invoice
POST /public/v1/invoices
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjUsImlhdCI6MTc3NDYyMzU2NSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiYjI0NWJjNmEtNjlkZS00MjQ0LWFmZjgtYzU4OTRkNzA1Y2I3IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY0LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTIyNyIsInR5cCI6ImFjY2VzcyJ9.Q0r38lpi7RTY95OWv_TxZ7i2ScW5hC6B_XfHkFQFAXU
{
"billing_location_id": "00000000-0000-0000-0000-0000000000e4",
"charges": [
{
"id": "71dccf9e-8597-4f0e-9bdf-d14f008bd017",
"name": "C1",
"percent": "10.0000",
"type": "CHARGE",
"unit_type": "PERCENT"
},
{
"name": "C3",
"price": "-5.0000",
"type": "DISCOUNT",
"unit_type": "PRICE"
}
],
"due_datetime": "2020-01-28T00:00:01.000000Z",
"id": "00000000-0000-0000-0000-00000000000f",
"invoice_datetime": "2020-01-02T00:00:00.000000Z",
"items": [
{
"id": "00000000-0000-0000-0000-000000000018",
"order_item_id": "ae782188-6740-464f-8bf3-43906473321a",
"quantity": "1.000000000"
},
{
"order_item_id": "86223c48-8e9c-4ed2-8d7c-0c39c3261601",
"quantity": "8.000000000"
}
],
"order_id": "bbf45a02-08f6-4b5e-b590-f9cbca8e011a"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: ec2da31c2e2de0000000000000000001-156cb8f511a64b84-0
{
"data": {
"charges": [
{
"id": "71dccf9e-8597-4f0e-9bdf-d14f008bd017",
"name": "C1",
"percent": "10.0000",
"price": "4.30",
"type": "CHARGE",
"unit_type": "PERCENT"
},
{
"id": "f7386bde-a27b-40fe-9754-1af13d8f4281",
"name": "C3",
"percent": null,
"price": "-5.00",
"type": "DISCOUNT",
"unit_type": "PRICE"
}
],
"company": {
"id": "00000000-0000-0000-0000-00000000024b",
"name": "Company 872",
"updated_datetime": "2026-03-27T14:59:25.103285Z"
},
"creator": {
"banned": false,
"deleted_at": null,
"email": "user1@a.com",
"full_name": "John Foo",
"id": "00000000-0000-0000-0000-0000000004cb",
"role": {
"id": "00000000-0000-0000-0000-0000000004ab",
"name": "Admin 1190"
}
},
"custom_data": [],
"due_datetime": "2020-01-28T00:00:01.000000Z",
"id": "00000000-0000-0000-0000-00000000000f",
"inserted_datetime": "2026-03-27T14:59:25.178637Z",
"invoice_datetime": "2020-01-02T00:00:00.000000Z",
"invoice_number": "INV-0000001",
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000001a4",
"name": "B1"
},
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "00000000-0000-0000-0000-000000000018",
"order_item_id": "ae782188-6740-464f-8bf3-43906473321a",
"package": null,
"price": "3.000000000",
"product": {
"id": "26ffee98-f355-4eff-bb3c-69d166334fae",
"name": "P1",
"sku": "SKU1",
"updated_datetime": "2026-03-27T14:59:25.119709Z"
},
"quantity": "1.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000001a9",
"name": "B2"
},
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "00000000-0000-0000-0000-00000000001a",
"order_item_id": "86223c48-8e9c-4ed2-8d7c-0c39c3261601",
"package": null,
"price": "5.000000000",
"product": {
"id": "566d2ca3-20a1-4cbe-9347-a1db4475ee9b",
"name": "P2",
"sku": "SKU2",
"updated_datetime": "2026-03-27T14:59:25.131282Z"
},
"quantity": "8.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
}
],
"order": {
"id": "bbf45a02-08f6-4b5e-b590-f9cbca8e011a",
"order_number": "SO-23",
"status": "Processing",
"total": "0.00"
},
"owner": null,
"paid_amount": "0.0",
"remaining_amount": "42.30",
"status": "NOT_PAID",
"total": "42.30",
"updated_datetime": "2026-03-27T14:59:25.307463Z"
}
}
POST /invoices reports various errors correctly on update
POST /public/v1/invoices
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjcsImlhdCI6MTc3NDYyMzU2NywiaXNzIjoiRGlzdHJ1IiwianRpIjoiNzBjN2QxZDItZWViMC00ZGNjLTkzMTgtZDRiYmQxZGNiYWY4IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY2LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTY3MCIsInR5cCI6ImFjY2VzcyJ9.sRetxoXRzmbAOp63JPingSBO9vTYbzVmgjJN-NCfpjw
{
"billing_location_id": "00000000-0000-0000-0000-00000000016d",
"charges": [
{
"name": "C1",
"percent": "-1000.0000",
"type": "CHARGE",
"unit_type": "PERCENT"
}
],
"due_datetime": "2020-01-30T00:00:01.000000Z",
"id": "00000000-0000-0000-0000-000000000020",
"invoice_datetime": "2020-01-01T00:00:00.000000Z",
"items": [
{
"order_item_id": "00000000-0000-0000-0000-000000000000",
"quantity": "15.000"
},
{
"order_item_id": "3325d17c-bbfa-4122-b226-75514ab41fd2",
"quantity": "19.000"
}
],
"order_id": "3aa96be3-4c2e-4f3d-baa0-587332060bf0"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: 02b8921d180d5ca00000000000000001-99b1089d809de097-0
{
"errors": [
{
"context": {
"id": "1f13f08e-c3eb-4d89-b99e-070ecd5531e1"
},
"message": "Must be less than or equal to 100",
"pointer": [
"charges",
0,
"percent"
],
"section": "body"
},
{
"context": {},
"message": "Order item not found",
"pointer": [
"items",
2,
"order_item_id"
],
"section": "body"
},
{
"context": {},
"message": "Only 10 left uninvoiced",
"pointer": [
"items",
3,
"quantity"
],
"section": "body"
}
]
}
Upsert a single invoice. To update an existing invoice, pass in an existing invoice ID in the id field. When updating an invoice, you must pass in all fields (no sparse update currently supported). Any existing invoice item or charge you do not pass in to items and charges respectively will be deleted
Request
POST /public/v1/invoices
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| due_datetime | The datetime at which the invoice is due | query | string | false | ||
| id | Unique ID for this invoice. If it exists, an update will be performed; otherwise, it will be used as the ID of a new invoice record | query | string | false | ||
| invoice_datetime | The datetime on which the invoice was placed | query | string | false | ||
| charges | The additional lines of Charge, Discount, or Tax added to this invoice | body | InvoiceChargesRequest | false | ||
| items | The invoice items present on this order | body | InvoiceItemsRequest | false | ||
| billing_location_id | The billing location's ID | query | string | false |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | A single invoice | Invoice |
Location
Get locations
GET /public/v1/locations returns locations related to the company
GET /public/v1/locations
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjEsImlhdCI6MTc3NDYyMzU2MSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiNTY0ZDMyYzktMjcyOS00YjYwLWI0ZjgtMzc1YTRlOWY0ZDc1IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYwLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MjQyIiwidHlwIjoiYWNjZXNzIn0.7c0ilL5Nlniyi1Zg_FzxtClHa9GyrMXu3zwMT56jfnM
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 8e4d5566c68700000000000000000001-4468dc0af4c14b3e-0
{
"data": [
{
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-0000000000af",
"deleted_at": null,
"id": "00000000-0000-0000-0000-000000000030",
"license": null,
"license_id": null,
"name": "Place 45"
},
{
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-0000000000af",
"deleted_at": null,
"id": "00000000-0000-0000-0000-000000000031",
"license": {
"id": "00000000-0000-0000-0000-000000000005",
"license_number": "CDPH-00000004"
},
"license_id": "00000000-0000-0000-0000-000000000005",
"name": "Place 46"
}
],
"next_page": null
}
Get locations sorted by their creation date and filtered by various attributes
Note: The page size for this endpoint is 1000 locations per page. This endpoint returns eventually consistent data, with changes taking up to 1 second to propagate in responses.
Request
GET /public/v1/locations
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| inserted_datetime | Filter locations by their creation datetime | query | string | false | 2022-07-10T00:00:00Z, | |
| deleted | Filter deleted locations. no returns non-deleted, only returns deleted, include returns both. |
query | string | false | no | |
| page | Pagination information | query | number | false | ?page[number]=1 | |
| updated_datetime | Filter locations by the datetime they were most recently modified | query | string | false | ,2022-07-10T00:00:00Z |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | A list of locations | Locations |
Order
Get orders
GET /public/v1/orders returns orders related to the company
GET /public/v1/orders
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjcsImlhdCI6MTc3NDYyMzU2NywiaXNzIjoiRGlzdHJ1IiwianRpIjoiMmE5YTk1ZmEtNmFhNi00OWExLWIwM2YtMWI3ZThlNDhlNDBmIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY2LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTcwOCIsInR5cCI6ImFjY2VzcyJ9.zbKE_B5Un881RIb-X-XV8fGWTVOaIuVy9eo1joOp36U
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: d5e060fa31bf78000000000000000001-c4bfa647e0dc3369-0
{
"data": [
{
"billing_location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-0000000004f8",
"id": "00000000-0000-0000-0000-000000000174",
"license_id": null,
"name": "Place 369"
},
"biotrack_id": null,
"charges": [
{
"id": "05afdb04-66b8-4910-83d4-baddf4f427ce",
"name": "C1",
"percent": "10.0000",
"price": "1.00",
"type": "CHARGE",
"unit_type": "PERCENT"
}
],
"company": {
"id": "00000000-0000-0000-0000-0000000003a3",
"name": "Company 1274",
"updated_datetime": "2030-11-01T00:00:00.000000Z"
},
"creator": {
"banned": false,
"deleted_at": null,
"email": "user1@a.com",
"full_name": "John Foo",
"id": "00000000-0000-0000-0000-0000000006a9",
"role": {
"id": "00000000-0000-0000-0000-000000000674",
"name": "Admin 1647"
}
},
"custom_data": [
{
"id": 44,
"name": "Custom Field 21",
"value": "Custom Field Value 1"
}
],
"delivery_datetime": "2020-01-01T00:00:00.000000Z",
"due_datetime": "2020-01-01T00:00:01.000000Z",
"external_notes": null,
"id": "4081b6bd-fecc-4e4b-b42b-0048531bd0da",
"inserted_datetime": "2020-01-01T00:00:03.000000Z",
"internal_notes": "Internal notes for this order",
"items": [
{
"batch": {
"batch_number": "UID1",
"id": "00000000-0000-0000-0000-0000000002bc",
"name": "B1"
},
"compliance_quantity": "10.0000",
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "4aaf6511-2b41-4155-b75e-52ffefc09cfd",
"is_sample": true,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-0000000004f8",
"id": "00000000-0000-0000-0000-000000000174",
"license_id": null,
"name": "Place 369"
},
"package": {
"batch_number": "B1",
"compliance_label": "ABCDEF012345670000000165",
"id": "00000000-0000-0000-0000-000000000053",
"metrc_label": "ABCDEF012345670000000165",
"status": "active"
},
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "691a1d17-138d-4ce0-99ae-5a122a1fbb3e",
"name": "P1",
"sku": "SKU1",
"updated_datetime": "2023-11-02T00:00:00.000000Z"
},
"quantity": "1.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
}
],
"leaflink_order_number": "d3def08e-4947-4106-b440-57b390f7ee66",
"metrc_transfer_id": 1,
"order_datetime": "2020-01-01T00:00:02.000000Z",
"order_number": "SO-123",
"owner": {
"banned": false,
"deleted_at": null,
"email": "user2@a.com",
"full_name": "John Bar",
"id": "00000000-0000-0000-0000-0000000006ab",
"role": {
"id": "00000000-0000-0000-0000-000000000675",
"name": "Admin 1648"
}
},
"payment_term_name": null,
"shipping_location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-0000000004f8",
"id": "00000000-0000-0000-0000-000000000174",
"license_id": null,
"name": "Place 369"
},
"status": "COMPLETED",
"total": "11.00",
"updated_datetime": "2020-01-01T00:00:04.000000Z"
}
],
"next_page": null
}
GET /public/v1/orders returns cost/returned_quantity data for order items
GET /public/v1/orders
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjUsImlhdCI6MTc3NDYyMzU2NSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMTgzOGZlYzQtODA2MS00NDRhLTk3Y2QtZGJjODUyY2YyNDQzIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY0LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTI0MSIsInR5cCI6ImFjY2VzcyJ9.Ktn5dBFJs533eeT7YyOQG9o5Lp-5ZRyf-vi1LeW0_bA
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: cd584e930527b0000000000000000001-6892de3cb0315a30-0
{
"data": [
{
"billing_location": null,
"biotrack_id": null,
"charges": [],
"company": {
"id": "00000000-0000-0000-0000-00000000025d",
"name": "Company 895",
"updated_datetime": "2026-03-27T14:59:25.239655Z"
},
"creator": {
"banned": false,
"deleted_at": null,
"email": "owner-1240@example.com",
"full_name": "FirstName2534 LastName2535",
"id": "00000000-0000-0000-0000-0000000004e7",
"role": {
"id": "00000000-0000-0000-0000-0000000004c6",
"name": "Admin 1217"
}
},
"custom_data": [],
"delivery_datetime": null,
"due_datetime": "2026-03-27T14:59:25.241539Z",
"external_notes": null,
"id": "a54ef9f5-a6ed-44bc-8473-4ead3b937e71",
"inserted_datetime": "2026-03-27T14:59:25.254313Z",
"internal_notes": null,
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000001ac",
"name": "B1302"
},
"compliance_quantity": null,
"cost_per_unit": "10.026",
"cost_per_unit_default": "5",
"id": "15763e6b-cf9c-49eb-aa02-2ff0250ed801",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-00000000037a",
"id": "00000000-0000-0000-0000-0000000000ea",
"license_id": null,
"name": "Place 231"
},
"package": null,
"price": "719458.000000000",
"price_base": "719458",
"product": {
"id": "367d2936-9449-4740-a613-45f686d17dcb",
"name": "Product 1297",
"sku": "sku 1298",
"updated_datetime": "2026-03-27T14:59:25.172811Z"
},
"quantity": "2.000000000",
"returned_quantity": "2",
"total_cost_actual": "20.052",
"total_cost_default": "10"
}
],
"leaflink_order_number": null,
"metrc_transfer_id": null,
"order_datetime": "2026-03-27T14:59:25.241540Z",
"order_number": "SO-0000001",
"owner": null,
"payment_term_name": null,
"shipping_location": null,
"status": "PROCESSING",
"total": "1438916.00",
"updated_datetime": "2026-03-27T14:59:25.254313Z"
}
],
"next_page": null
}
GET /public/v1/orders allows filtering by several statuses
GET /public/v1/orders?status[]=COMPLETED&status[]=CANCELED
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjYsImlhdCI6MTc3NDYyMzU2NiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiYzU0NmNmYWEtZmY1NC00YTQyLWI0ZGEtNGNhZDRkMzMxZDc3IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY1LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTQ4OSIsInR5cCI6ImFjY2VzcyJ9.9F7sUn_EiRomCCfHfBodYjjC3bSKQ37V2A5vbL7KPqI
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: e0a66d7c6ce4f8000000000000000001-9bbf6e8a2bbcb394-0
{
"data": [
{
"billing_location": null,
"biotrack_id": null,
"charges": [],
"company": {
"id": "00000000-0000-0000-0000-00000000032b",
"name": "Company 1134",
"updated_datetime": "2026-03-27T14:59:26.697914Z"
},
"creator": {
"banned": false,
"deleted_at": null,
"email": "owner-1530@example.com",
"full_name": "FirstName3114 LastName3115",
"id": "00000000-0000-0000-0000-00000000060e",
"role": {
"id": "00000000-0000-0000-0000-0000000005df",
"name": "Admin 1498"
}
},
"custom_data": [],
"delivery_datetime": null,
"due_datetime": "2026-03-27T14:59:26.712625Z",
"external_notes": null,
"id": "f19d9973-8422-4e78-9eec-5c293bad2cb1",
"inserted_datetime": "2026-03-27T14:59:26.712985Z",
"internal_notes": null,
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-00000000025b",
"name": "B1817"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "d21eb6bf-50fe-4cbe-8548-29b3dcb6bca3",
"is_sample": false,
"location": null,
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "ede27248-11ed-469a-93aa-09f484e498b0",
"name": "Product 1815",
"sku": "sku 1816",
"updated_datetime": "2026-03-27T14:59:26.724420Z"
},
"quantity": "15.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-00000000025c",
"name": "B1820"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "468d80fa-fcc4-4242-a6cb-1d8f6eb12a49",
"is_sample": false,
"location": null,
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "04d2e4fc-caa0-46d0-a9e8-8017202710dc",
"name": "Product 1818",
"sku": "sku 1819",
"updated_datetime": "2026-03-27T14:59:26.742188Z"
},
"quantity": "10.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-00000000025d",
"name": "B1823"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "a61f700c-67be-4e46-8f70-96c81edd07a6",
"is_sample": false,
"location": null,
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "42e067c6-44a2-4b84-8d69-f05ed9ebb51f",
"name": "Product 1821",
"sku": "sku 1822",
"updated_datetime": "2026-03-27T14:59:26.761338Z"
},
"quantity": "5.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-00000000025e",
"name": "B1828"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "26e285cb-7956-47a1-b90c-d08b635da037",
"is_sample": false,
"location": null,
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "9ed3f633-604a-4297-a71c-f1408c89ddb6",
"name": "Product 1826",
"sku": "sku 1827",
"updated_datetime": "2026-03-27T14:59:26.778924Z"
},
"quantity": "2.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
}
],
"leaflink_order_number": null,
"metrc_transfer_id": null,
"order_datetime": "2020-01-01T12:30:00.000000Z",
"order_number": "SO-44",
"owner": {
"banned": false,
"deleted_at": null,
"email": "owner-1530@example.com",
"full_name": "FirstName3114 LastName3115",
"id": "00000000-0000-0000-0000-00000000060e",
"role": {
"id": "00000000-0000-0000-0000-0000000005df",
"name": "Admin 1498"
}
},
"payment_term_name": null,
"shipping_location": null,
"status": "CANCELED",
"total": "320.00",
"updated_datetime": "2026-03-27T14:59:26.796257Z"
},
{
"billing_location": null,
"biotrack_id": null,
"charges": [],
"company": {
"id": "00000000-0000-0000-0000-000000000317",
"name": "Company 1114",
"updated_datetime": "2026-03-27T14:59:26.621338Z"
},
"creator": {
"banned": false,
"deleted_at": null,
"email": "owner-1518@example.com",
"full_name": "FirstName3090 LastName3091",
"id": "00000000-0000-0000-0000-000000000602",
"role": {
"id": "00000000-0000-0000-0000-0000000005d5",
"name": "Admin 1488"
}
},
"custom_data": [],
"delivery_datetime": null,
"due_datetime": "2026-03-27T14:59:26.636580Z",
"external_notes": null,
"id": "6a253ef9-79be-426f-b5c2-6c34f548b36b",
"inserted_datetime": "2026-03-27T14:59:26.636905Z",
"internal_notes": null,
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-00000000024c",
"name": "B1777"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "6a9a963c-c4ce-4675-a432-5e868fd20a6b",
"is_sample": false,
"location": null,
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "273fc298-f274-4f3f-99eb-34dca49dad00",
"name": "Product 1773",
"sku": "sku 1774",
"updated_datetime": "2026-03-27T14:59:26.643939Z"
},
"quantity": "15.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-000000000251",
"name": "B1787"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "7a327b2e-fd07-4307-9a3f-4a862089e012",
"is_sample": false,
"location": null,
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "883ace1b-d106-4e59-8621-cb01411b369f",
"name": "Product 1785",
"sku": "sku 1786",
"updated_datetime": "2026-03-27T14:59:26.658242Z"
},
"quantity": "10.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-000000000252",
"name": "B1792"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "bab53ac0-abf9-4976-9a3f-eaaafff51863",
"is_sample": false,
"location": null,
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "e1a43616-bfd4-4a16-b17e-508d846a0b83",
"name": "Product 1790",
"sku": "sku 1791",
"updated_datetime": "2026-03-27T14:59:26.664931Z"
},
"quantity": "5.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-000000000255",
"name": "B1799"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "2f67d38c-1e7b-42db-84cc-a7b583504967",
"is_sample": false,
"location": null,
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "ff11b9c0-fc17-4f84-baf1-c4581b82e8dc",
"name": "Product 1797",
"sku": "sku 1798",
"updated_datetime": "2026-03-27T14:59:26.672077Z"
},
"quantity": "2.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
}
],
"leaflink_order_number": null,
"metrc_transfer_id": null,
"order_datetime": "2020-01-01T12:20:00.000000Z",
"order_number": "SO-43",
"owner": {
"banned": false,
"deleted_at": null,
"email": "owner-1518@example.com",
"full_name": "FirstName3090 LastName3091",
"id": "00000000-0000-0000-0000-000000000602",
"role": {
"id": "00000000-0000-0000-0000-0000000005d5",
"name": "Admin 1488"
}
},
"payment_term_name": null,
"shipping_location": null,
"status": "COMPLETED",
"total": "320.00",
"updated_datetime": "2026-03-27T14:59:26.689458Z"
},
{
"billing_location": null,
"biotrack_id": null,
"charges": [],
"company": {
"id": "00000000-0000-0000-0000-0000000002f5",
"name": "Company 1077",
"updated_datetime": "2026-03-27T14:59:26.367223Z"
},
"creator": {
"banned": false,
"deleted_at": null,
"email": "owner-1473@example.com",
"full_name": "FirstName3000 LastName3001",
"id": "00000000-0000-0000-0000-0000000005d3",
"role": {
"id": "00000000-0000-0000-0000-0000000005a8",
"name": "Admin 1443"
}
},
"custom_data": [],
"delivery_datetime": null,
"due_datetime": "2026-03-27T14:59:26.395138Z",
"external_notes": null,
"id": "7cdf4d2a-e571-42e0-bc99-d256d7759bab",
"inserted_datetime": "2026-03-27T14:59:26.396629Z",
"internal_notes": null,
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-000000000230",
"name": "B1690"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "5b284f0f-2ef6-4b51-b5a9-de681709151a",
"is_sample": false,
"location": null,
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "522b412b-21c8-4ebc-a368-9c3246a961d5",
"name": "Product 1688",
"sku": "sku 1689",
"updated_datetime": "2026-03-27T14:59:26.412774Z"
},
"quantity": "15.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-000000000232",
"name": "B1694"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "fb49b7fc-5dfb-4045-910c-caef804a80d6",
"is_sample": false,
"location": null,
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "4df41e9e-56a0-435b-9a9f-7dff666fd406",
"name": "Product 1692",
"sku": "sku 1693",
"updated_datetime": "2026-03-27T14:59:26.431809Z"
},
"quantity": "10.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-000000000233",
"name": "B1697"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "3f35a12d-eb15-402f-b4be-9480d42b28fc",
"is_sample": false,
"location": null,
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "6a242cba-67d4-4c23-b5a4-da96893e734e",
"name": "Product 1695",
"sku": "sku 1696",
"updated_datetime": "2026-03-27T14:59:26.440309Z"
},
"quantity": "5.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-000000000234",
"name": "B1700"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "ff69363d-353f-4e07-bd52-2f4923bec2d5",
"is_sample": false,
"location": null,
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "05d8b12a-da80-4d54-bb20-bd2f599b455a",
"name": "Product 1698",
"sku": "sku 1699",
"updated_datetime": "2026-03-27T14:59:26.448756Z"
},
"quantity": "2.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
}
],
"leaflink_order_number": null,
"metrc_transfer_id": null,
"order_datetime": "2020-01-01T12:00:00.000000Z",
"order_number": "SO-39",
"owner": {
"banned": false,
"deleted_at": null,
"email": "owner-1473@example.com",
"full_name": "FirstName3000 LastName3001",
"id": "00000000-0000-0000-0000-0000000005d3",
"role": {
"id": "00000000-0000-0000-0000-0000000005a8",
"name": "Admin 1443"
}
},
"payment_term_name": null,
"shipping_location": null,
"status": "COMPLETED",
"total": "320.00",
"updated_datetime": "2026-03-27T14:59:26.476679Z"
}
],
"next_page": null
}
Get orders sorted by Order Date descendingly date and filtered by various attributes
Note: The page size for this endpoint is 500 orders per page.
Request
GET /public/v1/orders
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| delivery_datetime | Filter orders by the delivery datetime | query | string | false | 2022-07-10T00:00:00Z, | |
| due_datetime | Filter orders by the due datetime | query | string | false | ,2022-07-10T00:00:00Z | |
| inserted_datetime | Filter orders by their creation datetime | query | string | false | 2022-07-10T00:00:00Z, | |
| order_datetime | Filter orders by the order datetime | query | string | false | 2022-07-10T00:00:00Z,2022-07-11T00:00:00Z | |
| page | Pagination information | query | number | false | ?page[number]=1 | |
| status | Filter orders by their status. Accepted values are "PENDING", "PROCESSING", "READY_TO_SHIP", "DELIVERING", "DELIVERED", "COMPLETED" and "CANCELED". | query | array | false | ["PENDING","PROCESSING"] | |
| updated_datetime | Filter orders by the datetime they were most recently modified | query | string | false | ,2022-07-10T00:00:00Z |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | A list of orders | Orders |
Get an order
GET /orders/:id returns the expected order
GET /public/v1/orders/fe3aecd0-6bbf-454c-845b-f70004c6ac72
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjcsImlhdCI6MTc3NDYyMzU2NywiaXNzIjoiRGlzdHJ1IiwianRpIjoiNDllYWU1MDctYmI1My00ZDAxLWIzMTYtNTgxMDFmOTU4ZTUyIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY2LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTY3OCIsInR5cCI6ImFjY2VzcyJ9.vDPXkEGtCnuSAxHQBUhwEx0_lElQwai3pA9EJ3D5ZOM
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 821d99db7ce020000000000000000001-b58715743b2acbd7-0
{
"data": {
"billing_location": null,
"biotrack_id": null,
"charges": [],
"company": {
"id": "00000000-0000-0000-0000-000000000392",
"name": "Company 1253",
"updated_datetime": "2026-03-27T14:59:27.407286Z"
},
"creator": {
"banned": false,
"deleted_at": null,
"email": "owner-1658@example.com",
"full_name": "FirstName3370 LastName3371",
"id": "00000000-0000-0000-0000-000000000690",
"role": {
"id": "00000000-0000-0000-0000-00000000065b",
"name": "Admin 1622"
}
},
"custom_data": [
{
"id": 43,
"name": "Custom Field 20",
"value": "Custom Field Value 1"
}
],
"delivery_datetime": null,
"due_datetime": "2026-03-27T14:59:27.420020Z",
"external_notes": null,
"id": "fe3aecd0-6bbf-454c-845b-f70004c6ac72",
"inserted_datetime": "2026-03-27T14:59:27.420438Z",
"internal_notes": null,
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000002af",
"name": "B2063"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "53eda8f7-1428-46d4-8a79-175a45dec816",
"is_sample": false,
"location": null,
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "84aafde3-def5-4999-89a7-bd5871d072cd",
"name": "Product 2061",
"sku": "sku 2062",
"updated_datetime": "2026-03-27T14:59:27.431317Z"
},
"quantity": "15.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000002b0",
"name": "B2066"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "a7445a23-73a2-474f-a846-95e72e0837b6",
"is_sample": false,
"location": null,
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "5a6e8292-1675-42fa-8891-355bd6e3ae5e",
"name": "Product 2064",
"sku": "sku 2065",
"updated_datetime": "2026-03-27T14:59:27.442777Z"
},
"quantity": "10.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000002b1",
"name": "B2069"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "19f4ea8d-f295-4e7a-952f-a3bc1043a545",
"is_sample": false,
"location": null,
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "ac448551-8a5c-480a-b6e8-d263a570993a",
"name": "Product 2067",
"sku": "sku 2068",
"updated_datetime": "2026-03-27T14:59:27.450064Z"
},
"quantity": "5.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000002b2",
"name": "B2072"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "d4d4f185-964c-40a7-840b-2db5f02aaf2f",
"is_sample": false,
"location": null,
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "72f99fb8-782b-44af-bede-09910ec324df",
"name": "Product 2070",
"sku": "sku 2071",
"updated_datetime": "2026-03-27T14:59:27.457402Z"
},
"quantity": "2.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
}
],
"leaflink_order_number": null,
"metrc_transfer_id": null,
"order_datetime": "2026-03-27T14:59:27.420020Z",
"order_number": "SO-57",
"owner": {
"banned": false,
"deleted_at": null,
"email": "owner-1658@example.com",
"full_name": "FirstName3370 LastName3371",
"id": "00000000-0000-0000-0000-000000000690",
"role": {
"id": "00000000-0000-0000-0000-00000000065b",
"name": "Admin 1622"
}
},
"payment_term_name": null,
"shipping_location": null,
"status": "COMPLETED",
"total": "320.00",
"updated_datetime": "2026-03-27T14:59:27.475671Z"
}
}
GET /orders/:id returns cost data for order items
GET /public/v1/orders/af0f83e0-e14a-4926-9a3d-efed110aae95
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiYjQxMmIxNmEtNmJmMy00OTM4LTlmZDMtMDg5YmFhYzFmNDhhIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NjAwIiwidHlwIjoiYWNjZXNzIn0.CMZ4o2VQKE-tDf41TMSh8QKd4qtP_JIrfa1fY1p125Q
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 51b67f4c896d48000000000000000001-e78fe859174df2cc-0
{
"data": {
"billing_location": null,
"biotrack_id": null,
"charges": [],
"company": {
"id": "00000000-0000-0000-0000-000000000129",
"name": "Company 493",
"updated_datetime": "2026-03-27T14:59:23.071638Z"
},
"creator": {
"banned": false,
"deleted_at": null,
"email": "owner-620@example.com",
"full_name": "FirstName1288 LastName1289",
"id": "00000000-0000-0000-0000-000000000274",
"role": {
"id": "00000000-0000-0000-0000-00000000026a",
"name": "Admin 613"
}
},
"custom_data": [],
"delivery_datetime": null,
"due_datetime": "2026-03-27T14:59:23.072652Z",
"external_notes": null,
"id": "af0f83e0-e14a-4926-9a3d-efed110aae95",
"inserted_datetime": "2026-03-27T14:59:23.126175Z",
"internal_notes": null,
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-00000000007f",
"name": "B505"
},
"compliance_quantity": null,
"cost_per_unit": "10.026",
"cost_per_unit_default": "5",
"id": "09e01413-33fe-4e76-a4f4-ec7670e190d2",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-0000000001da",
"id": "00000000-0000-0000-0000-000000000054",
"license_id": null,
"name": "Place 81"
},
"package": null,
"price": "329140.000000000",
"price_base": "329140",
"product": {
"id": "f6ca79fd-b27d-43e4-b5e5-fbae95f0710d",
"name": "Product 501",
"sku": "sku 502",
"updated_datetime": "2026-03-27T14:59:22.966591Z"
},
"quantity": "2.000000000",
"returned_quantity": "0",
"total_cost_actual": "20.052",
"total_cost_default": "10"
}
],
"leaflink_order_number": null,
"metrc_transfer_id": null,
"order_datetime": "2026-03-27T14:59:23.072653Z",
"order_number": "SO-0000001",
"owner": null,
"payment_term_name": null,
"shipping_location": null,
"status": "PROCESSING",
"total": "658280.00",
"updated_datetime": "2026-03-27T14:59:23.126175Z"
}
}
Get a single order given the ID. Note: This endpoint returns eventually consistent data, with changes taking up to 1 second to propagate in responses.
Request
GET /public/v1/orders/{id}
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| id | Order ID | path | string | true |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | A single order | Order |
Upsert an order
POST /public/v1/orders creates an order (with product-tracked item)
POST /public/v1/orders
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiZWUwM2NlNDgtNTIyMS00Yjk2LWI0MzUtNDFiNTMxNmFmNDBjIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NzAzIiwidHlwIjoiYWNjZXNzIn0.mF0Bx40QdsIV8sTjYrJL0-tRjsgMh1CrE4DNCF0E7jM
{
"billing_location_id": "00000000-0000-0000-0000-000000000066",
"charges": [
{
"name": "C1",
"percent": "10.0000",
"type": "CHARGE",
"unit_type": "PERCENT"
},
{
"name": "C2",
"price": "-5.0000",
"type": "DISCOUNT",
"unit_type": "PRICE"
}
],
"company_id": "00000000-0000-0000-0000-000000000148",
"delivery_datetime": "2020-01-01T00:00:00.000000Z",
"due_datetime": "2020-01-01T00:00:01.000000Z",
"external_notes": "Thank you for ordering!",
"internal_notes": "Internal notes for this order",
"items": [
{
"location_id": "00000000-0000-0000-0000-000000000066",
"price_base": "10.000000000",
"product_id": "a2f571da-d3c9-43f9-9209-48c071602a8d",
"quantity": "1.000000000"
}
],
"order_datetime": "2020-01-01T00:00:02.000000Z",
"owner_id": "00000000-0000-0000-0000-0000000002bf",
"shipping_location_id": "00000000-0000-0000-0000-000000000066",
"status": "PROCESSING"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 8f23d20eb234c8000000000000000001-f27e95d368ffbaf8-0
{
"data": {
"billing_location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-00000000021b",
"id": "00000000-0000-0000-0000-000000000066",
"license_id": "00000000-0000-0000-0000-000000000019",
"name": "Place 99"
},
"biotrack_id": null,
"charges": [
{
"id": "071ff18e-6daf-4cbe-bd31-eaa31e3380f7",
"name": "C1",
"percent": "10.0000",
"price": "1.00",
"type": "CHARGE",
"unit_type": "PERCENT"
},
{
"id": "eb7b90dc-ba35-4214-b0cb-b5577a11bcc3",
"name": "C2",
"percent": null,
"price": "-5.00",
"type": "DISCOUNT",
"unit_type": "PRICE"
}
],
"company": {
"id": "00000000-0000-0000-0000-000000000148",
"name": "Company 541",
"updated_datetime": "2026-03-27T14:59:23.258072Z"
},
"creator": {
"banned": false,
"deleted_at": null,
"email": "user1@a.com",
"full_name": "John Foo",
"id": "00000000-0000-0000-0000-0000000002bf",
"role": {
"id": "00000000-0000-0000-0000-0000000002b4",
"name": "Admin 687"
}
},
"custom_data": [
{
"id": 35,
"name": "Custom Field 12",
"value": null
}
],
"delivery_datetime": "2020-01-01T00:00:00.000000Z",
"due_datetime": "2020-01-01T00:00:01.000000Z",
"external_notes": "Thank you for ordering!",
"id": "1887e3a0-acfd-4088-b8fb-7b2b74778422",
"inserted_datetime": "2026-03-27T14:59:23.320961Z",
"internal_notes": "Internal notes for this order",
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000000a7",
"name": "B1"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "2d63fea1-369f-4405-acbb-e35a97449e32",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-00000000021b",
"id": "00000000-0000-0000-0000-000000000066",
"license_id": "00000000-0000-0000-0000-000000000019",
"name": "Place 99"
},
"package": null,
"price": "10.000000000",
"price_base": "10.000000000",
"product": {
"id": "a2f571da-d3c9-43f9-9209-48c071602a8d",
"name": "P1",
"sku": "SKU1",
"updated_datetime": "2026-03-27T14:59:23.284261Z"
},
"quantity": "1.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
}
],
"leaflink_order_number": null,
"metrc_transfer_id": null,
"order_datetime": "2020-01-01T00:00:02.000000Z",
"order_number": "SO-0000001",
"owner": {
"banned": false,
"deleted_at": null,
"email": "user1@a.com",
"full_name": "John Foo",
"id": "00000000-0000-0000-0000-0000000002bf",
"role": {
"id": "00000000-0000-0000-0000-0000000002b4",
"name": "Admin 687"
}
},
"payment_term_name": null,
"shipping_location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-00000000021b",
"id": "00000000-0000-0000-0000-000000000066",
"license_id": "00000000-0000-0000-0000-000000000019",
"name": "Place 99"
},
"status": "PROCESSING",
"total": "6.00",
"updated_datetime": "2026-03-27T14:59:23.372807Z"
}
}
POST /public/v1/orders creates an order (with product-tracked item) for a Blaze retailer, fails if payment type not specified
POST /public/v1/orders
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMmY4MTkxNDYtM2QwNS00MmIzLTgxYWEtNDY0MGRhNmRjODVkIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NDgxIiwidHlwIjoiYWNjZXNzIn0.lE8IhW6yaSJyMreaPKUtO76kBIYaI25ce5klfSW6I6w
{
"billing_location_id": "00000000-0000-0000-0000-000000000041",
"charges": [],
"company_id": "00000000-0000-0000-0000-0000000000d7",
"delivery_datetime": "2020-01-01T00:00:00.000000Z",
"due_datetime": "2020-01-01T00:00:01.000000Z",
"items": [
{
"location_id": "00000000-0000-0000-0000-000000000041",
"price_base": "10.000000000",
"product_id": "b8e743b4-466d-4573-985f-53c289c42074",
"quantity": "1.000000000"
}
],
"order_datetime": "2020-01-01T00:00:02.000000Z",
"shipping_location_id": "00000000-0000-0000-0000-000000000041",
"status": "PROCESSING"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: e8c7eb9ecd7a18000000000000000001-c42b9f15484d8722-0
{
"errors": [
{
"context": {
"id": "853d7ecf-7360-4e3f-a4aa-a3456b7c98cb"
},
"message": "can't be blank",
"pointer": [
"blaze_payment_type"
],
"section": "body"
}
]
}
POST /public/v1/orders creates an order (with product-tracked item) for a Blaze retailer, fails if payment type not specified
POST /public/v1/orders
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMmY4MTkxNDYtM2QwNS00MmIzLTgxYWEtNDY0MGRhNmRjODVkIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NDgxIiwidHlwIjoiYWNjZXNzIn0.lE8IhW6yaSJyMreaPKUtO76kBIYaI25ce5klfSW6I6w
{
"billing_location_id": "00000000-0000-0000-0000-000000000041",
"blaze_payment_type": "CASH",
"charges": [],
"company_id": "00000000-0000-0000-0000-0000000000d7",
"delivery_datetime": "2020-01-01T00:00:00.000000Z",
"due_datetime": "2020-01-01T00:00:01.000000Z",
"items": [
{
"location_id": "00000000-0000-0000-0000-000000000041",
"price_base": "10.000000000",
"product_id": "b8e743b4-466d-4573-985f-53c289c42074",
"quantity": "1.000000000"
}
],
"order_datetime": "2020-01-01T00:00:02.000000Z",
"shipping_location_id": "00000000-0000-0000-0000-000000000041",
"status": "PROCESSING"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: e8c7eb9ecd7a18000000000000000001-53099fb833e23bf3-0
{
"data": {
"billing_location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000168",
"id": "00000000-0000-0000-0000-000000000041",
"license_id": "00000000-0000-0000-0000-00000000000c",
"name": "Place 62"
},
"biotrack_id": null,
"charges": [],
"company": {
"id": "00000000-0000-0000-0000-0000000000d7",
"name": "Company 363",
"updated_datetime": "2026-03-27T14:59:22.570089Z"
},
"creator": {
"banned": false,
"deleted_at": null,
"email": "owner-474@example.com",
"full_name": "FirstName986 LastName987",
"id": "00000000-0000-0000-0000-0000000001e1",
"role": {
"id": "00000000-0000-0000-0000-0000000001dc",
"name": "Admin 471"
}
},
"custom_data": [],
"delivery_datetime": "2020-01-01T00:00:00.000000Z",
"due_datetime": "2020-01-01T00:00:01.000000Z",
"external_notes": null,
"id": "3efd08f1-56a8-472c-90f3-9271049330ba",
"inserted_datetime": "2026-03-27T14:59:22.706026Z",
"internal_notes": null,
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-000000000066",
"name": "B1"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "6799a7de-cccf-4b73-839f-7fbd4e4d403a",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000168",
"id": "00000000-0000-0000-0000-000000000041",
"license_id": "00000000-0000-0000-0000-00000000000c",
"name": "Place 62"
},
"package": null,
"price": "10.000000000",
"price_base": "10.000000000",
"product": {
"id": "b8e743b4-466d-4573-985f-53c289c42074",
"name": "P1",
"sku": "SKU1",
"updated_datetime": "2026-03-27T14:59:22.609457Z"
},
"quantity": "1.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
}
],
"leaflink_order_number": null,
"metrc_transfer_id": null,
"order_datetime": "2020-01-01T00:00:02.000000Z",
"order_number": "SO-0000002",
"owner": null,
"payment_term_name": null,
"shipping_location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000168",
"id": "00000000-0000-0000-0000-000000000041",
"license_id": "00000000-0000-0000-0000-00000000000c",
"name": "Place 62"
},
"status": "PROCESSING",
"total": "10.00",
"updated_datetime": "2026-03-27T14:59:22.706026Z"
}
}
POST /public/v1/orders applies the best fit price tier items to order items
POST /public/v1/orders
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjUsImlhdCI6MTc3NDYyMzU2NSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiNGQ0NTllYzQtZjEwNy00ZWE1LWJmYmItMWZkMGFkOTkyN2RmIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY0LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTQwNiIsInR5cCI6ImFjY2VzcyJ9.pSJPUQGaMaG2mTzI8yQ7O-QPVTMXljtCbcPSh8bW7jg
{
"billing_location_id": "00000000-0000-0000-0000-000000000112",
"charges": [],
"company_id": "00000000-0000-0000-0000-0000000002b9",
"delivery_datetime": "2020-01-01T00:00:00.000000Z",
"due_datetime": "2020-01-01T00:00:01.000000Z",
"items": [
{
"location_id": "00000000-0000-0000-0000-000000000112",
"position": 1,
"price_base": "100.000000000",
"product_id": "a8655c27-6995-4706-be8a-fb844aa2aff0",
"quantity": "80.000000000"
},
{
"location_id": "00000000-0000-0000-0000-000000000112",
"position": 2,
"price_base": "200.000000000",
"product_id": "a8655c27-6995-4706-be8a-fb844aa2aff0",
"quantity": "10.000000000"
},
{
"location_id": "00000000-0000-0000-0000-000000000112",
"position": 3,
"price_base": "300.000000000",
"product_id": "3ab5cfd0-ef22-480a-a0c5-52f1fbb8c967",
"quantity": "20.000000000"
}
],
"order_datetime": "2020-01-01T00:00:02.000000Z",
"shipping_location_id": "00000000-0000-0000-0000-000000000112",
"status": "PROCESSING"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 60b4351788c7f4000000000000000001-d0dc7776e4fb7203-0
{
"data": {
"billing_location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-0000000003ea",
"id": "00000000-0000-0000-0000-000000000112",
"license_id": "00000000-0000-0000-0000-000000000056",
"name": "Place 271"
},
"biotrack_id": null,
"charges": [],
"company": {
"id": "00000000-0000-0000-0000-0000000002b9",
"name": "Company 1000",
"updated_datetime": "2026-03-27T14:59:25.967831Z"
},
"creator": {
"banned": false,
"deleted_at": null,
"email": "owner-1390@example.com",
"full_name": "FirstName2834 LastName2835",
"id": "00000000-0000-0000-0000-00000000057e",
"role": {
"id": "00000000-0000-0000-0000-000000000555",
"name": "Admin 1360"
}
},
"custom_data": [],
"delivery_datetime": "2020-01-01T00:00:00.000000Z",
"due_datetime": "2020-01-01T00:00:01.000000Z",
"external_notes": null,
"id": "c9c2336d-6b69-4fdd-96d4-876ec2f47a85",
"inserted_datetime": "2026-03-27T14:59:26.054003Z",
"internal_notes": null,
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-000000000203",
"name": "B1"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "e92fc488-3cf8-49c9-a949-e32d0ccb9c1f",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-0000000003ea",
"id": "00000000-0000-0000-0000-000000000112",
"license_id": "00000000-0000-0000-0000-000000000056",
"name": "Place 271"
},
"package": null,
"price": "80.000000000",
"price_base": "100.000000000",
"product": {
"id": "a8655c27-6995-4706-be8a-fb844aa2aff0",
"name": "P1",
"sku": "SKU1",
"updated_datetime": "2026-03-27T14:59:25.992447Z"
},
"quantity": "80.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-000000000203",
"name": "B1"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "3aac0faf-66d8-4031-ac8a-eb11cfd30d14",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-0000000003ea",
"id": "00000000-0000-0000-0000-000000000112",
"license_id": "00000000-0000-0000-0000-000000000056",
"name": "Place 271"
},
"package": null,
"price": "180.000000000",
"price_base": "200.000000000",
"product": {
"id": "a8655c27-6995-4706-be8a-fb844aa2aff0",
"name": "P1",
"sku": "SKU1",
"updated_datetime": "2026-03-27T14:59:25.992447Z"
},
"quantity": "10.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-000000000207",
"name": "B2"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "cc45f7f1-ea8a-4762-b181-912238d56a67",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-0000000003ea",
"id": "00000000-0000-0000-0000-000000000112",
"license_id": "00000000-0000-0000-0000-000000000056",
"name": "Place 271"
},
"package": null,
"price": "270.000000000",
"price_base": "300.000000000",
"product": {
"id": "3ab5cfd0-ef22-480a-a0c5-52f1fbb8c967",
"name": "P2",
"sku": "SKU2",
"updated_datetime": "2026-03-27T14:59:26.009153Z"
},
"quantity": "20.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
}
],
"leaflink_order_number": null,
"metrc_transfer_id": null,
"order_datetime": "2020-01-01T00:00:02.000000Z",
"order_number": "SO-0000001",
"owner": null,
"payment_term_name": null,
"shipping_location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-0000000003ea",
"id": "00000000-0000-0000-0000-000000000112",
"license_id": "00000000-0000-0000-0000-000000000056",
"name": "Place 271"
},
"status": "PROCESSING",
"total": "13600.00",
"updated_datetime": "2026-03-27T14:59:26.076590Z"
}
}
POST /public/v1/orders creates an order (with batch-tracked item)
POST /public/v1/orders
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNzEsImlhdCI6MTc3NDYyMzU3MSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMzljNDIxYjktOGJlMi00N2NkLWE5NGUtZWRmMGM1OGU3YzVlIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTcwLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MjA0NiIsInR5cCI6ImFjY2VzcyJ9.5m5o_bkNiMDROTH8YUSl_qOr5jh8huOHG9Q8-xnNMTk
{
"due_datetime": "2020-01-01T00:00:01.000000Z",
"items": [
{
"batch_id": "00000000-0000-0000-0000-00000000038d",
"location_id": "00000000-0000-0000-0000-0000000001df",
"price_base": "10.000000000",
"quantity": "1.000000000"
}
],
"order_datetime": "2020-01-01T00:00:02.000000Z",
"status": "PROCESSING"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: cc4f993336e9c8000000000000000001-07a0a092e157fbdb-0
{
"data": {
"billing_location": null,
"biotrack_id": null,
"charges": [],
"company": null,
"creator": {
"banned": false,
"deleted_at": null,
"email": "user1@a.com",
"full_name": "John Foo",
"id": "00000000-0000-0000-0000-0000000007fe",
"role": {
"id": "00000000-0000-0000-0000-0000000007c8",
"name": "Admin 1987"
}
},
"custom_data": [],
"delivery_datetime": null,
"due_datetime": "2020-01-01T00:00:01.000000Z",
"external_notes": null,
"id": "92087513-da0b-4a51-b7a1-b470dc21990e",
"inserted_datetime": "2026-03-27T14:59:31.412116Z",
"internal_notes": null,
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-00000000038d",
"name": "B1"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "921a03f5-0830-451d-862f-a16ebd4b244f",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-00000000062e",
"id": "00000000-0000-0000-0000-0000000001df",
"license_id": "00000000-0000-0000-0000-00000000009b",
"name": "Place 476"
},
"package": null,
"price": "10.000000000",
"price_base": "10.000000000",
"product": {
"id": "50432692-0f88-44bd-8755-9cf9d6b1ad4b",
"name": "P1",
"sku": "SKU1",
"updated_datetime": "2026-03-27T14:59:31.391214Z"
},
"quantity": "1.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
}
],
"leaflink_order_number": null,
"metrc_transfer_id": null,
"order_datetime": "2020-01-01T00:00:02.000000Z",
"order_number": "SO-0000001",
"owner": null,
"payment_term_name": null,
"shipping_location": null,
"status": "PROCESSING",
"total": "10.00",
"updated_datetime": "2026-03-27T14:59:31.412116Z"
}
}
POST /public/v1/orders creates an order (with batch-tracked item without batch set)
POST /public/v1/orders
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjUsImlhdCI6MTc3NDYyMzU2NSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiNTM5ZTViY2YtZjQ5NC00YjMxLThmMzItOTBkYmNhMzAwNmIyIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY0LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTM2OCIsInR5cCI6ImFjY2VzcyJ9.VQZQ4G8MoMNIjho4XtYMIDBqSGqDS1B3HAFH45FCelg
{
"due_datetime": "2020-01-01T00:00:01.000000Z",
"items": [
{
"location_id": "00000000-0000-0000-0000-000000000107",
"price_base": "10.000000000",
"product_id": "a4cee65c-0f16-4066-98cb-f6914006628c",
"quantity": "1.000000000"
}
],
"order_datetime": "2020-01-01T00:00:02.000000Z",
"status": "PROCESSING"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: e7da9768719a08000000000000000001-276f49102d2d529f-0
{
"data": {
"billing_location": null,
"biotrack_id": null,
"charges": [],
"company": null,
"creator": {
"banned": false,
"deleted_at": null,
"email": "user1@a.com",
"full_name": "John Foo",
"id": "00000000-0000-0000-0000-000000000558",
"role": {
"id": "00000000-0000-0000-0000-000000000532",
"name": "Admin 1325"
}
},
"custom_data": [],
"delivery_datetime": null,
"due_datetime": "2020-01-01T00:00:01.000000Z",
"external_notes": null,
"id": "bc449cb2-2a03-483c-bcbc-2e67d770af1d",
"inserted_datetime": "2026-03-27T14:59:25.782154Z",
"internal_notes": null,
"items": [
{
"batch": null,
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "f4d0465e-eff9-4d9c-8c1b-aca972120665",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-0000000003c9",
"id": "00000000-0000-0000-0000-000000000107",
"license_id": "00000000-0000-0000-0000-000000000053",
"name": "Place 260"
},
"package": null,
"price": "10.000000000",
"price_base": "10.000000000",
"product": {
"id": "a4cee65c-0f16-4066-98cb-f6914006628c",
"name": "P1",
"sku": "SKU1",
"updated_datetime": "2026-03-27T14:59:25.772412Z"
},
"quantity": "1.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
}
],
"leaflink_order_number": null,
"metrc_transfer_id": null,
"order_datetime": "2020-01-01T00:00:02.000000Z",
"order_number": "SO-0000001",
"owner": null,
"payment_term_name": null,
"shipping_location": null,
"status": "PROCESSING",
"total": "10.00",
"updated_datetime": "2026-03-27T14:59:25.782154Z"
}
}
POST /public/v1/orders creates an order (with package-tracked item)
POST /public/v1/orders
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjgsImlhdCI6MTc3NDYyMzU2OCwiaXNzIjoiRGlzdHJ1IiwianRpIjoiNzU1MmUwNTAtMzhkNy00YTUyLWFmZDMtOWQwYzU4M2RkMjQxIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY3LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTgxMCIsInR5cCI6ImFjY2VzcyJ9.hylf0XbWLtdKfduf7TWzTs6XaiRXMAA2cundqnqehmc
{
"due_datetime": "2020-01-01T00:00:01.000000Z",
"items": [
{
"compliance_quantity": "1.0000",
"is_sample": true,
"location_id": "00000000-0000-0000-0000-00000000018e",
"package_id": "00000000-0000-0000-0000-000000000059",
"price_base": "10.000000000",
"quantity": "1.000000000"
}
],
"order_datetime": "2020-01-01T00:00:02.000000Z",
"status": "PROCESSING"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 22b3e7e33d4b10000000000000000001-3a8eb96cbbbc713b-0
{
"data": {
"billing_location": null,
"biotrack_id": null,
"charges": [],
"company": null,
"creator": {
"banned": false,
"deleted_at": null,
"email": "owner-1785@example.com",
"full_name": "FirstName3624 LastName3625",
"id": "00000000-0000-0000-0000-000000000712",
"role": {
"id": "00000000-0000-0000-0000-0000000006dd",
"name": "Admin 1752"
}
},
"custom_data": [],
"delivery_datetime": null,
"due_datetime": "2020-01-01T00:00:01.000000Z",
"external_notes": null,
"id": "b628bd26-f2f2-42ad-aceb-4ef4518216b5",
"inserted_datetime": "2026-03-27T14:59:28.511498Z",
"internal_notes": null,
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000002ee",
"name": "B1"
},
"compliance_quantity": "1.0000",
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "b66636e7-f22b-404e-88e9-1d9e03818f26",
"is_sample": true,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000543",
"id": "00000000-0000-0000-0000-00000000018e",
"license_id": "00000000-0000-0000-0000-00000000007d",
"name": "Place 395"
},
"package": {
"batch_number": "B1",
"compliance_label": "ABCDEF012345670000000174",
"id": "00000000-0000-0000-0000-000000000059",
"metrc_label": "ABCDEF012345670000000174",
"status": "selling"
},
"price": "10.000000000",
"price_base": "10.000000000",
"product": {
"id": "507464c9-002e-4376-b1df-5837ba109e8d",
"name": "P1",
"sku": "SKU1",
"updated_datetime": "2026-03-27T14:59:28.430041Z"
},
"quantity": "1.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
}
],
"leaflink_order_number": null,
"metrc_transfer_id": null,
"order_datetime": "2020-01-01T00:00:02.000000Z",
"order_number": "SO-0000001",
"owner": null,
"payment_term_name": null,
"shipping_location": null,
"status": "PROCESSING",
"total": "10.00",
"updated_datetime": "2026-03-27T14:59:28.511498Z"
}
}
POST /public/v1/orders creates an order (with package-tracked item without package set)
POST /public/v1/orders
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjksImlhdCI6MTc3NDYyMzU2OSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiYTM0Yzc3NDktODhlMy00OTM2LWJjYWEtMTg0MTM0NmFjOTgwIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY4LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTkyNSIsInR5cCI6ImFjY2VzcyJ9.ne5_Y5eRPokjh2W2wetE6vM6oQ5eD19z0IIGMQmWjDM
{
"due_datetime": "2020-01-01T00:00:01.000000Z",
"items": [
{
"location_id": "00000000-0000-0000-0000-0000000001b2",
"price_base": "10.000000000",
"product_id": "41a12572-28db-4672-acab-94ff6ce5bd07",
"quantity": "1.000000000"
}
],
"order_datetime": "2020-01-01T00:00:02.000000Z",
"status": "PROCESSING"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 172952156b9a01000000000000000001-9ee764cba8b2402f-0
{
"data": {
"billing_location": null,
"biotrack_id": null,
"charges": [],
"company": null,
"creator": {
"banned": false,
"deleted_at": null,
"email": "user1@a.com",
"full_name": "John Foo",
"id": "00000000-0000-0000-0000-000000000785",
"role": {
"id": "00000000-0000-0000-0000-00000000074f",
"name": "Admin 1866"
}
},
"custom_data": [],
"delivery_datetime": null,
"due_datetime": "2020-01-01T00:00:01.000000Z",
"external_notes": null,
"id": "6cb1373d-c753-4602-b7cc-ee802e791b04",
"inserted_datetime": "2026-03-27T14:59:29.749783Z",
"internal_notes": null,
"items": [
{
"batch": null,
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "2214ec33-24cc-410a-9af0-1da0d2252b67",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-0000000005bc",
"id": "00000000-0000-0000-0000-0000000001b2",
"license_id": "00000000-0000-0000-0000-000000000089",
"name": "Place 431"
},
"package": null,
"price": "10.000000000",
"price_base": "10.000000000",
"product": {
"id": "41a12572-28db-4672-acab-94ff6ce5bd07",
"name": "P1",
"sku": "SKU1",
"updated_datetime": "2026-03-27T14:59:29.743255Z"
},
"quantity": "1.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
}
],
"leaflink_order_number": null,
"metrc_transfer_id": null,
"order_datetime": "2020-01-01T00:00:02.000000Z",
"order_number": "SO-0000001",
"owner": null,
"payment_term_name": null,
"shipping_location": null,
"status": "PROCESSING",
"total": "10.00",
"updated_datetime": "2026-03-27T14:59:29.749783Z"
}
}
POST /public/v1/orders creates an order with metrc transfer template
POST /public/v1/orders
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNzAsImlhdCI6MTc3NDYyMzU3MCwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMzZlODkyNWUtNWY5Ni00ZmYxLWExOTUtMGE2NjAxOTEzZThlIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY5LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTk5NyIsInR5cCI6ImFjY2VzcyJ9.ASuMkx_GgLIjD8NjUwSlYCbK8LjrOW7QiauvJ4BD9EU
{
"billing_location_id": "00000000-0000-0000-0000-0000000001d1",
"charges": [],
"company_id": "00000000-0000-0000-0000-000000000476",
"delivery_datetime": "2020-01-01T00:00:00.000000Z",
"due_datetime": "2020-01-01T00:00:01.000000Z",
"external_notes": null,
"items": [
{
"compliance_quantity": "1.0000",
"id": "b64ef767-d2a1-4ff8-819f-7bae0323b27d",
"location_id": "00000000-0000-0000-0000-0000000001d1",
"package_id": "00000000-0000-0000-0000-00000000005b",
"price_base": "10.000000000",
"quantity": "1.000000000"
}
],
"location_id": "00000000-0000-0000-0000-0000000001d1",
"metrc_transfer_template_directions": "Go to the store around the corner",
"metrc_transfer_template_recipient_license_number": "C12-0123458-LIC",
"metrc_transfer_template_status": "PENDING",
"metrc_transfer_template_transporter_info": [
{
"driver_license_number": "1234567890",
"driver_name": "John Doe",
"driver_occupational_license_number": "1234567890",
"driver_phone_number": "1234567890",
"estimated_arrival_datetime": "2020-01-01T10:30:00.000000Z",
"estimated_departure_datetime": "2020-01-01T08:00:00.000000Z",
"transporter_license_number": "C12-0123456-LIC",
"vehicle_license_plate_number": "1234567890",
"vehicle_make": "Toyota",
"vehicle_model": "Prius"
},
{
"driver_license_number": "1234567891",
"driver_name": "Jane Doe",
"driver_occupational_license_number": "1234567891",
"driver_phone_number": "1234567891",
"estimated_arrival_datetime": "2020-01-01T16:45:00.000000Z",
"estimated_departure_datetime": "2020-01-01T14:00:00.000000Z",
"transporter_license_number": "C12-0123457-LIC",
"vehicle_license_plate_number": "1234567891",
"vehicle_make": "Toyota",
"vehicle_model": "Corolla"
}
],
"metrc_transfer_template_type": "Transfer",
"order_datetime": "2020-01-01T00:00:02.000000Z",
"owner_id": "00000000-0000-0000-0000-0000000007cd",
"shipping_location_id": "00000000-0000-0000-0000-0000000001d1",
"status": "PROCESSING"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 1edd73afa445a0000000000000000001-bcf2251d439f0b24-0
{
"data": {
"billing_location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-0000000005f1",
"id": "00000000-0000-0000-0000-0000000001d1",
"license_id": "00000000-0000-0000-0000-000000000099",
"name": "Place 462"
},
"biotrack_id": null,
"charges": [],
"company": {
"id": "00000000-0000-0000-0000-000000000476",
"name": "Company 1518",
"updated_datetime": "2026-03-27T14:59:30.333833Z"
},
"creator": {
"banned": false,
"deleted_at": null,
"email": "user1@a.com",
"full_name": "John Foo",
"id": "00000000-0000-0000-0000-0000000007cd",
"role": {
"id": "00000000-0000-0000-0000-000000000797",
"name": "Admin 1938"
}
},
"custom_data": [],
"delivery_datetime": "2020-01-01T00:00:00.000000Z",
"due_datetime": "2020-01-01T00:00:01.000000Z",
"external_notes": null,
"id": "719d2d4d-2fd5-4c35-8cb2-5595d4e4a015",
"inserted_datetime": "2026-03-27T14:59:30.431204Z",
"internal_notes": null,
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-000000000362",
"name": "B2"
},
"compliance_quantity": "1.0000",
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "b64ef767-d2a1-4ff8-819f-7bae0323b27d",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-0000000005f1",
"id": "00000000-0000-0000-0000-0000000001d1",
"license_id": "00000000-0000-0000-0000-000000000099",
"name": "Place 462"
},
"package": {
"batch_number": "B1",
"compliance_label": "ABCDEF012345670000000178",
"id": "00000000-0000-0000-0000-00000000005b",
"metrc_label": "ABCDEF012345670000000178",
"status": "selling"
},
"price": "10.000000000",
"price_base": "10.000000000",
"product": {
"id": "ec82191f-f354-43b5-8659-e627a573c32a",
"name": "P1",
"sku": "SKU1",
"updated_datetime": "2026-03-27T14:59:30.350498Z"
},
"quantity": "1.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
}
],
"leaflink_order_number": null,
"metrc_transfer_id": null,
"order_datetime": "2020-01-01T00:00:02.000000Z",
"order_number": "SO-0000001",
"owner": {
"banned": false,
"deleted_at": null,
"email": "user1@a.com",
"full_name": "John Foo",
"id": "00000000-0000-0000-0000-0000000007cd",
"role": {
"id": "00000000-0000-0000-0000-000000000797",
"name": "Admin 1938"
}
},
"payment_term_name": null,
"shipping_location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-0000000005f1",
"id": "00000000-0000-0000-0000-0000000001d1",
"license_id": "00000000-0000-0000-0000-000000000099",
"name": "Place 462"
},
"status": "PROCESSING",
"total": "10.00",
"updated_datetime": "2026-03-27T14:59:30.484811Z"
}
}
POST /public/v1/orders updates an order
POST /public/v1/orders
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiMjZmNjY1NmQtYjY1Zi00ZWY3LWE1OTMtMzNmMDJiMTEyYmE1IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6ODQxIiwidHlwIjoiYWNjZXNzIn0.CpPoZyqlI2WjbAr_pOmQ2hozXql9ptDyVsXzZCiK9pk
{
"billing_location_id": "00000000-0000-0000-0000-000000000094",
"charges": [
{
"id": "5b136774-d8f0-4af7-9401-3c0b62a630c6",
"name": "C1",
"percent": "10.0000",
"type": "CHARGE",
"unit_type": "PERCENT"
},
{
"id": "bc59d96b-7169-4db7-90a3-43ae5b1bb742",
"name": "C2",
"price": "-5.00",
"type": "DISCOUNT",
"unit_type": "PRICE"
}
],
"company_id": "00000000-0000-0000-0000-000000000194",
"delivery_datetime": "2020-01-01T00:00:00.000000Z",
"due_datetime": "2020-01-01T00:00:01.000000Z",
"external_notes": "gonna make you sweat",
"id": "dc9807c6-0df6-42e7-add0-636c4759f4a7",
"items": [
{
"id": "ca689af6-ebd6-45fd-bce9-d2d016e1b4c4",
"is_sample": true,
"location_id": "00000000-0000-0000-0000-000000000094",
"price_base": "10.000000000",
"product_id": "ff268a58-53c2-45c5-9e5e-61cd9139251f",
"quantity": "2.000000000"
},
{
"id": "d56fcedd-c2e7-4632-9dcb-c69c851a9550",
"location_id": "00000000-0000-0000-0000-000000000094",
"price_base": "100.000000000",
"product_id": "ff268a58-53c2-45c5-9e5e-61cd9139251f",
"quantity": "3.000000000"
},
{
"compliance_quantity": "1.0000",
"id": "20fef79e-4212-4d18-84dc-01b3b397bd44",
"location_id": "00000000-0000-0000-0000-000000000094",
"package_id": "00000000-0000-0000-0000-000000000020",
"price_base": "10.000000000",
"quantity": "1.000000000"
}
],
"location_id": "00000000-0000-0000-0000-000000000094",
"metrc_transfer_template_directions": "Go to the store around the corner",
"metrc_transfer_template_recipient_license_number": "C12-0123458-LIC",
"metrc_transfer_template_status": "PENDING",
"metrc_transfer_template_transporter_info": [
{
"driver_license_number": "1234567890",
"driver_name": "John Doe",
"driver_occupational_license_number": "1234567890",
"driver_phone_number": "1234567890",
"transporter_license_number": "C12-0123456-LIC",
"vehicle_license_plate_number": "1234567890",
"vehicle_make": "Toyota",
"vehicle_model": "Prius"
},
{
"driver_license_number": "1234567891",
"driver_name": "Jane Doe",
"driver_occupational_license_number": "1234567891",
"driver_phone_number": "1234567891",
"transporter_license_number": "C12-0123457-LIC",
"vehicle_license_plate_number": "1234567891",
"vehicle_make": "Toyota",
"vehicle_model": "Corolla"
}
],
"metrc_transfer_template_type": "Transfer",
"order_datetime": "2020-01-01T00:00:02.000000Z",
"owner_id": "00000000-0000-0000-0000-00000000036f",
"shipping_location_id": "00000000-0000-0000-0000-000000000094",
"status": "PROCESSING"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 9faf489cb957c0000000000000000001-d30814ef3ff541f8-0
{
"data": {
"billing_location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000280",
"id": "00000000-0000-0000-0000-000000000094",
"license_id": "00000000-0000-0000-0000-000000000025",
"name": "Place 145"
},
"biotrack_id": null,
"charges": [
{
"id": "5b136774-d8f0-4af7-9401-3c0b62a630c6",
"name": "C1",
"percent": "10.0000",
"price": "33.00",
"type": "CHARGE",
"unit_type": "PERCENT"
},
{
"id": "bc59d96b-7169-4db7-90a3-43ae5b1bb742",
"name": "C2",
"percent": null,
"price": "-5.00",
"type": "DISCOUNT",
"unit_type": "PRICE"
}
],
"company": {
"id": "00000000-0000-0000-0000-000000000194",
"name": "Company 641",
"updated_datetime": "2026-03-27T14:59:23.698043Z"
},
"creator": {
"banned": false,
"deleted_at": null,
"email": "user1@a.com",
"full_name": "John Foo",
"id": "00000000-0000-0000-0000-000000000345",
"role": {
"id": "00000000-0000-0000-0000-000000000332",
"name": "Admin 813"
}
},
"custom_data": [],
"delivery_datetime": "2020-01-01T00:00:00.000000Z",
"due_datetime": "2020-01-01T00:00:01.000000Z",
"external_notes": "gonna make you sweat",
"id": "dc9807c6-0df6-42e7-add0-636c4759f4a7",
"inserted_datetime": "2026-03-27T14:59:23.734328Z",
"internal_notes": null,
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000000d5",
"name": "B1"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "ca689af6-ebd6-45fd-bce9-d2d016e1b4c4",
"is_sample": true,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000280",
"id": "00000000-0000-0000-0000-000000000094",
"license_id": "00000000-0000-0000-0000-000000000025",
"name": "Place 145"
},
"package": null,
"price": "10.000000000",
"price_base": "10.000000000",
"product": {
"id": "ff268a58-53c2-45c5-9e5e-61cd9139251f",
"name": "P1",
"sku": "SKU1",
"updated_datetime": "2026-03-27T14:59:23.721264Z"
},
"quantity": "2.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000000d5",
"name": "B1"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "d56fcedd-c2e7-4632-9dcb-c69c851a9550",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000280",
"id": "00000000-0000-0000-0000-000000000094",
"license_id": "00000000-0000-0000-0000-000000000025",
"name": "Place 145"
},
"package": null,
"price": "100.000000000",
"price_base": "100.000000000",
"product": {
"id": "ff268a58-53c2-45c5-9e5e-61cd9139251f",
"name": "P1",
"sku": "SKU1",
"updated_datetime": "2026-03-27T14:59:23.721264Z"
},
"quantity": "3.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000000de",
"name": "B2"
},
"compliance_quantity": "1.0000",
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "20fef79e-4212-4d18-84dc-01b3b397bd44",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000280",
"id": "00000000-0000-0000-0000-000000000094",
"license_id": "00000000-0000-0000-0000-000000000025",
"name": "Place 145"
},
"package": {
"batch_number": "B2",
"compliance_label": "ABCDEF012345670000000056",
"id": "00000000-0000-0000-0000-000000000020",
"metrc_label": "ABCDEF012345670000000056",
"status": "selling"
},
"price": "10.000000000",
"price_base": "10.000000000",
"product": {
"id": "c58df951-9830-4d2d-bc0f-9d0e9f7d4a84",
"name": "P2",
"sku": "SKU2",
"updated_datetime": "2026-03-27T14:59:23.752162Z"
},
"quantity": "1.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
}
],
"leaflink_order_number": null,
"metrc_transfer_id": null,
"order_datetime": "2020-01-01T00:00:02.000000Z",
"order_number": "SO-11",
"owner": {
"banned": false,
"deleted_at": null,
"email": "owner-869@example.com",
"full_name": "FirstName1790 LastName1791",
"id": "00000000-0000-0000-0000-00000000036f",
"role": {
"id": "00000000-0000-0000-0000-000000000359",
"name": "Admin 852"
}
},
"payment_term_name": null,
"shipping_location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000280",
"id": "00000000-0000-0000-0000-000000000094",
"license_id": "00000000-0000-0000-0000-000000000025",
"name": "Place 145"
},
"status": "PROCESSING",
"total": "358.00",
"updated_datetime": "2026-03-27T14:59:23.966560Z"
}
}
POST /public/v1/orders does not alter locked price tier items on update
POST /public/v1/orders
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjcsImlhdCI6MTc3NDYyMzU2NywiaXNzIjoiRGlzdHJ1IiwianRpIjoiOTIxOGY3NzUtODM4Ni00NDhiLTkzYjYtMGFiMDBjZWEwZWU4IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY2LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTczMCIsInR5cCI6ImFjY2VzcyJ9.v-mzX_yTMlopB9cvDVx7XujS093GUeJlAc7K4N9FbNk
{
"billing_location_id": "00000000-0000-0000-0000-00000000017a",
"charges": [],
"company_id": "00000000-0000-0000-0000-0000000003ab",
"delivery_datetime": "2020-01-01T00:00:00.000000Z",
"due_datetime": "2020-01-01T00:00:01.000000Z",
"items": [
{
"location_id": "00000000-0000-0000-0000-00000000017a",
"position": 1,
"price_base": "100.000000000",
"product_id": "684f7f63-75ba-411f-a0b8-f37ede875681",
"quantity": "10.000000000"
},
{
"location_id": "00000000-0000-0000-0000-00000000017a",
"position": 2,
"price_base": "200.000000000",
"product_id": "a65d2bbc-fca7-42c1-b6a3-93c96b16ca50",
"quantity": "10.000000000"
},
{
"location_id": "00000000-0000-0000-0000-00000000017a",
"position": 3,
"price_base": "300.000000000",
"product_id": "1618cd40-eefd-4ada-afed-894986eb4895",
"quantity": "10.000000000"
}
],
"order_datetime": "2020-01-01T00:00:02.000000Z",
"shipping_location_id": "00000000-0000-0000-0000-00000000017a",
"status": "PROCESSING"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 354e6b1da6a94a000000000000000001-b1ddd38eb2516903-0
{
"data": {
"billing_location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000507",
"id": "00000000-0000-0000-0000-00000000017a",
"license_id": "00000000-0000-0000-0000-000000000073",
"name": "Place 375"
},
"biotrack_id": null,
"charges": [],
"company": {
"id": "00000000-0000-0000-0000-0000000003ab",
"name": "Company 1284",
"updated_datetime": "2026-03-27T14:59:27.742025Z"
},
"creator": {
"banned": false,
"deleted_at": null,
"email": "owner-1706@example.com",
"full_name": "FirstName3466 LastName3467",
"id": "00000000-0000-0000-0000-0000000006c2",
"role": {
"id": "00000000-0000-0000-0000-00000000068d",
"name": "Admin 1672"
}
},
"custom_data": [],
"delivery_datetime": "2020-01-01T00:00:00.000000Z",
"due_datetime": "2020-01-01T00:00:01.000000Z",
"external_notes": null,
"id": "1d00dd6d-2d5d-45e1-87f4-d3dc32c187c9",
"inserted_datetime": "2026-03-27T14:59:27.860668Z",
"internal_notes": null,
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000002c4",
"name": "B1"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "c0808a26-7886-4f09-9ee8-b168752bd94b",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000507",
"id": "00000000-0000-0000-0000-00000000017a",
"license_id": "00000000-0000-0000-0000-000000000073",
"name": "Place 375"
},
"package": null,
"price": "90.000000000",
"price_base": "100.000000000",
"product": {
"id": "684f7f63-75ba-411f-a0b8-f37ede875681",
"name": "P1",
"sku": "SKU1",
"updated_datetime": "2026-03-27T14:59:27.773653Z"
},
"quantity": "10.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000002c5",
"name": "B2"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "b9cd7913-2151-417c-b700-149c732054e9",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000507",
"id": "00000000-0000-0000-0000-00000000017a",
"license_id": "00000000-0000-0000-0000-000000000073",
"name": "Place 375"
},
"package": null,
"price": "200.000000000",
"price_base": "200.000000000",
"product": {
"id": "a65d2bbc-fca7-42c1-b6a3-93c96b16ca50",
"name": "P2",
"sku": "SKU2",
"updated_datetime": "2026-03-27T14:59:27.795783Z"
},
"quantity": "10.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000002c7",
"name": "B3"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "697cbd43-b053-4216-892f-23ac74c28826",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000507",
"id": "00000000-0000-0000-0000-00000000017a",
"license_id": "00000000-0000-0000-0000-000000000073",
"name": "Place 375"
},
"package": null,
"price": "290.000000000",
"price_base": "300.000000000",
"product": {
"id": "1618cd40-eefd-4ada-afed-894986eb4895",
"name": "P3",
"sku": "SKU3",
"updated_datetime": "2026-03-27T14:59:27.817911Z"
},
"quantity": "10.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
}
],
"leaflink_order_number": null,
"metrc_transfer_id": null,
"order_datetime": "2020-01-01T00:00:02.000000Z",
"order_number": "SO-0000001",
"owner": null,
"payment_term_name": null,
"shipping_location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000507",
"id": "00000000-0000-0000-0000-00000000017a",
"license_id": "00000000-0000-0000-0000-000000000073",
"name": "Place 375"
},
"status": "PROCESSING",
"total": "5800.00",
"updated_datetime": "2026-03-27T14:59:27.888740Z"
}
}
POST /public/v1/orders deleting order items & charges
POST /public/v1/orders
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNzAsImlhdCI6MTc3NDYyMzU3MCwiaXNzIjoiRGlzdHJ1IiwianRpIjoiYmVjNDE5MzctZjI1Yi00YmM2LWIzZGEtZmE5MzZmMWE5NTgxIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY5LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTk3NSIsInR5cCI6ImFjY2VzcyJ9.rBPaki2f1bVDSoboxG5AOskrcM1lZujf2f1556NOH1k
{
"billing_location_id": "00000000-0000-0000-0000-0000000001c8",
"charges": [],
"company_id": "00000000-0000-0000-0000-000000000466",
"delivery_datetime": "2020-01-01T00:00:00.000000Z",
"due_datetime": "2020-01-01T00:00:01.000000Z",
"id": "e3ffb3b7-48ff-43b0-816a-1cdf71e0122a",
"items": [
{
"id": "09ac35fc-6972-4fb3-88be-9f43a0c0d155",
"location_id": "00000000-0000-0000-0000-0000000001c8",
"price_base": "10.000000000",
"product_id": "435e34b2-1668-4c39-83c6-b2d34452abc6",
"quantity": "1.000000000"
}
],
"order_datetime": "2020-01-01T00:00:02.000000Z",
"shipping_location_id": "00000000-0000-0000-0000-0000000001c8",
"status": "PROCESSING"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 55f80ca226a5a8000000000000000001-bab74f2755abd142-0
{
"data": {
"billing_location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-0000000005de",
"id": "00000000-0000-0000-0000-0000000001c8",
"license_id": "00000000-0000-0000-0000-000000000094",
"name": "Place 453"
},
"biotrack_id": null,
"charges": [],
"company": {
"id": "00000000-0000-0000-0000-000000000466",
"name": "Company 1500",
"updated_datetime": "2026-03-27T14:59:30.099982Z"
},
"creator": {
"banned": false,
"deleted_at": null,
"email": "user1@a.com",
"full_name": "John Foo",
"id": "00000000-0000-0000-0000-0000000007b7",
"role": {
"id": "00000000-0000-0000-0000-000000000781",
"name": "Admin 1916"
}
},
"custom_data": [],
"delivery_datetime": "2020-01-01T00:00:00.000000Z",
"due_datetime": "2020-01-01T00:00:01.000000Z",
"external_notes": null,
"id": "e3ffb3b7-48ff-43b0-816a-1cdf71e0122a",
"inserted_datetime": "2026-03-27T14:59:30.138229Z",
"internal_notes": null,
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-000000000357",
"name": "B1"
},
"compliance_quantity": null,
"cost_per_unit": null,
"cost_per_unit_default": null,
"id": "09ac35fc-6972-4fb3-88be-9f43a0c0d155",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-0000000005de",
"id": "00000000-0000-0000-0000-0000000001c8",
"license_id": "00000000-0000-0000-0000-000000000094",
"name": "Place 453"
},
"package": null,
"price": "10.000000000",
"price_base": "10.000000000",
"product": {
"id": "435e34b2-1668-4c39-83c6-b2d34452abc6",
"name": "P1",
"sku": "SKU1",
"updated_datetime": "2026-03-27T14:59:30.122892Z"
},
"quantity": "1.000000000",
"returned_quantity": "0",
"total_cost_actual": null,
"total_cost_default": null
}
],
"leaflink_order_number": null,
"metrc_transfer_id": null,
"order_datetime": "2020-01-01T00:00:02.000000Z",
"order_number": "SO-98",
"owner": null,
"payment_term_name": null,
"shipping_location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-0000000005de",
"id": "00000000-0000-0000-0000-0000000001c8",
"license_id": "00000000-0000-0000-0000-000000000094",
"name": "Place 453"
},
"status": "PROCESSING",
"total": "10.00",
"updated_datetime": "2026-03-27T14:59:30.198097Z"
}
}
Upsert a single order. To update an existing order, pass in an existing order ID in the id field. When updating an order, you must pass in all fields (no sparse update currently supported). Any existing order item or charge you do not pass in to items and charges respectively will be deleted
Request
POST /public/v1/orders
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| biotrack_id | The Biotrack ID for this order | query | string | false | ||
| blaze_payment_type | The payment type for an order shipping to a Blaze-associated company. Required when the company being used is mapped to a Blaze retailer via the Distru integration. | query | string | false | CASH | |
| company_id | Company ID | query | string | false | ||
| delivery_datetime | The datetime on which the order was / will be delivered | query | string | false | ||
| due_datetime | The datetime by which the order should be completed for the customer | query | string | false | ||
| external_notes | This is a message that will be shown to the customer on order slips. This is the "Message to Customer" field in the Distru order form. | query | string | false | ||
| id | Unique ID for this order. If it exists, an update will be performed; otherwise, it will be used as the ID of a new order record | query | string | false | ||
| order_datetime | The datetime on which the order was placed | query | string | false | ||
| charges | The additional lines of Charge, Discount, or Tax added to this order | body | OrderChargesRequest | false | ||
| items | The order items present on this order | body | OrderItemsRequest | false | ||
| internal_notes | Internal notes for this order | query | string | false | ||
| metrc_transfer_template_transporter_info | The Metrc transfer template transporter(s) information about this order | body | OrderTransferTemplateTransporterInfosRequest | false | ||
| metrc_transfer_template_directions | The Metrc transfer template directions | query | string | false | ||
| metrc_transfer_id | The Metrc transfer ID for this order | query | integer | false | ||
| metrc_transfer_template_recipient_license_number | The Metrc transfer template recipient license number | query | string | false | ||
| metrc_transfer_template_status | The Metrc transfer template status | query | string | false | ||
| metrc_transfer_template_type | The Metrc transfer template type | query | string | false | ||
| billing_location_id | The billing location's ID | query | string | false | ||
| shipping_location_id | The shipping location's ID | query | string | false | ||
| owner_id | The ID of the Distru user that owns this order | query | string | false | ||
| status | Filter orders by their status. Accepted values are "PENDING", "PROCESSING", "READY_TO_SHIP", "DELIVERING", "DELIVERED", "COMPLETED" and "CANCELED". | query | string | false | PENDING |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | A single order | Order |
Package
Get packages
GET /public/v1/packages returns packages related to the company
GET /public/v1/packages
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiOTVlYjA5ZjMtMzllYi00NGFiLWEwNTUtZTdlODk4ZGQ0Nzc4IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6ODAyIiwidHlwIjoiYWNjZXNzIn0.9BI8Shak0M-1eO5_cPVZIIoKQovKXkhgmqbl9-4cW0o
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: ddc1f5d10c1d98000000000000000001-ebd8ff304b52cb00-0
{
"data": [
{
"batch_number": null,
"compliance_label": "ABCDEF012345670000000052",
"custom_data": [
{
"id": 37,
"name": "Custom Field 14",
"value": "Custom Field Value 1"
}
],
"expiration_date": "2024-01-01T00:00:00.000000Z",
"harvest_date": "2024-06-15",
"id": "00000000-0000-0000-0000-00000000001c",
"is_trade_sample": true,
"license": {
"id": "00000000-0000-0000-0000-000000000022",
"license_number": "CDPH-00000033"
},
"location": {
"id": "00000000-0000-0000-0000-00000000008b",
"name": "Place 136"
},
"metrc_label": "ABCDEF012345670000000052",
"packaged_date": "2024-07-01",
"primary_test_result": null,
"product_id": "ff3fe0b4-ed47-4ff5-be0b-cd39ae3157fb",
"product_unit_quantity": "7.500000000",
"product_unit_type": {
"id": "00000000-0000-0000-0000-000000001fb3",
"name": "3"
},
"quantity": "5.000000000",
"quantity_assembling": "0.000000000",
"quantity_available": "5.000000000",
"status": "active",
"unit_type": {
"id": "00000000-0000-0000-0000-000000001fb4",
"name": "2"
}
},
{
"batch_number": null,
"compliance_label": "ABCDEF012345670000000054",
"custom_data": [
{
"id": 37,
"name": "Custom Field 14",
"value": null
}
],
"expiration_date": null,
"harvest_date": null,
"id": "00000000-0000-0000-0000-00000000001d",
"is_trade_sample": false,
"license": {
"id": "00000000-0000-0000-0000-000000000022",
"license_number": "CDPH-00000033"
},
"location": {
"id": "00000000-0000-0000-0000-000000000092",
"name": "Place 143"
},
"metrc_label": "ABCDEF012345670000000054",
"packaged_date": null,
"primary_test_result": {
"cbd_mg_per_unit": "1",
"cbd_mg_per_unit_total": "2",
"cbd_percentage": "3",
"cbd_percentage_total": "4",
"mg_per_unit_type": "mg/mL",
"name": "File.pdf",
"thc_mg_per_unit": "5",
"thc_mg_per_unit_total": "6",
"thc_percentage": "7",
"thc_percentage_total": "8"
},
"product_id": "ff3fe0b4-ed47-4ff5-be0b-cd39ae3157fb",
"product_unit_quantity": "15.000000000",
"product_unit_type": {
"id": "00000000-0000-0000-0000-000000001fb3",
"name": "3"
},
"quantity": "20.000000000",
"quantity_assembling": "0.000000000",
"quantity_available": "20.000000000",
"status": "active",
"unit_type": {
"id": "00000000-0000-0000-0000-000000001fb5",
"name": "4"
}
}
],
"next_page": null
}
GET /public/v1/packages returns cost data when include_costs is true
GET /public/v1/packages?include_costs=true
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjEsImlhdCI6MTc3NDYyMzU2MSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiZjMyOWRjNjItODlmMy00MDBhLWFiZTMtYjYyNTUyYjE0OWU0IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYwLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MjEyIiwidHlwIjoiYWNjZXNzIn0.dNzduIW93NEYtUpcxE18qS1y0luUSSHcUbnKPEhE--g
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 2eabcfcc9c8390000000000000000001-4ff9572cbc0bd339-0
{
"data": [
{
"batch_number": null,
"compliance_label": "ABCDEF012345670000000011",
"cost_per_unit_actual": "0.4",
"cost_per_unit_default": "0.2",
"custom_data": [],
"expiration_date": null,
"harvest_date": null,
"id": "00000000-0000-0000-0000-000000000007",
"is_trade_sample": false,
"license": {
"id": "00000000-0000-0000-0000-000000000004",
"license_number": "CDPH-00000003"
},
"location": {
"id": "00000000-0000-0000-0000-00000000002f",
"name": "Place 44"
},
"metrc_label": "ABCDEF012345670000000011",
"packaged_date": "2014-11-29",
"primary_test_result": null,
"product_id": "9756813d-3c58-4e9e-a08a-7cf71665dae7",
"product_unit_quantity": "141.747462720",
"product_unit_type": {
"id": "00000000-0000-0000-0000-00000000076b",
"name": "Gram"
},
"quantity": "5.000000000",
"quantity_assembling": "0.000000000",
"quantity_available": "5.000000000",
"status": "active",
"total_cost_actual": "2",
"total_cost_default": "1",
"unit_type": {
"id": "00000000-0000-0000-0000-00000000076d",
"name": "Ounce"
}
}
],
"next_page": null
}
GET /public/v1/packages allows filtering by product_ids
GET /public/v1/packages?product_ids[]=2b619c00-ec1e-44a6-b61b-3289c31fd6be&product_ids[]=59a1aa38-d10f-462e-9e0e-05b589b17cce
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjEsImlhdCI6MTc3NDYyMzU2MSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMGU4NjViZGQtYjdhNi00NjljLTkxMzUtMDBjNGZmM2NkZjU3IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYwLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTUzIiwidHlwIjoiYWNjZXNzIn0.sIzIXB0ph8uC0cctJTcdy8m5Y1hQLqJ_V3MINpG2hf0
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 625f26cdf669ac000000000000000001-4a32f75c4303b752-0
{
"data": [
{
"batch_number": null,
"compliance_label": "ABCDEF012345670000000005",
"custom_data": [],
"expiration_date": null,
"harvest_date": null,
"id": "00000000-0000-0000-0000-000000000003",
"is_trade_sample": false,
"license": {
"id": "00000000-0000-0000-0000-000000000003",
"license_number": "CDPH-00000002"
},
"location": {
"id": "00000000-0000-0000-0000-000000000021",
"name": "Place 30"
},
"metrc_label": "ABCDEF012345670000000005",
"packaged_date": null,
"primary_test_result": null,
"product_id": "2b619c00-ec1e-44a6-b61b-3289c31fd6be",
"product_unit_quantity": "10.000000000",
"product_unit_type": {
"id": "00000000-0000-0000-0000-00000000051f",
"name": "Gram"
},
"quantity": "10.000000000",
"quantity_assembling": "0.000000000",
"quantity_available": "10.000000000",
"status": "active",
"unit_type": {
"id": "00000000-0000-0000-0000-00000000051f",
"name": "Gram"
}
},
{
"batch_number": null,
"compliance_label": "ABCDEF012345670000000007",
"custom_data": [],
"expiration_date": null,
"harvest_date": null,
"id": "00000000-0000-0000-0000-000000000004",
"is_trade_sample": false,
"license": {
"id": "00000000-0000-0000-0000-000000000003",
"license_number": "CDPH-00000002"
},
"location": {
"id": "00000000-0000-0000-0000-000000000023",
"name": "Place 31"
},
"metrc_label": "ABCDEF012345670000000007",
"packaged_date": null,
"primary_test_result": null,
"product_id": "59a1aa38-d10f-462e-9e0e-05b589b17cce",
"product_unit_quantity": "10.000000000",
"product_unit_type": {
"id": "00000000-0000-0000-0000-00000000051f",
"name": "Gram"
},
"quantity": "10.000000000",
"quantity_assembling": "0.000000000",
"quantity_available": "10.000000000",
"status": "active",
"unit_type": {
"id": "00000000-0000-0000-0000-00000000051f",
"name": "Gram"
}
}
],
"next_page": null
}
GET /public/v1/packages allows filtering by ids
GET /public/v1/packages?ids[]=00000000-0000-0000-0000-00000000003c
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjUsImlhdCI6MTc3NDYyMzU2NSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiNjA2ZGE1OWItYTY0OS00NDkyLThlNTgtNzQ3MzIyYTcwNTkxIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY0LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTIzMiIsInR5cCI6ImFjY2VzcyJ9.VFGaGm4KVRE6RL8-h4yQQY2IjJREFPxGori4OZVpxso
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: ea7641974a7668000000000000000001-c7a98d381d0c0a39-0
{
"data": [
{
"batch_number": null,
"compliance_label": "ABCDEF012345670000000117",
"custom_data": [],
"expiration_date": null,
"harvest_date": null,
"id": "00000000-0000-0000-0000-00000000003c",
"is_trade_sample": false,
"license": {
"id": "00000000-0000-0000-0000-00000000004a",
"license_number": "CDPH-00000073"
},
"location": {
"id": "00000000-0000-0000-0000-0000000000e7",
"name": "Place 228"
},
"metrc_label": "ABCDEF012345670000000117",
"packaged_date": null,
"primary_test_result": null,
"product_id": "dd051bf4-94ca-4b10-9c3f-219eeded69b9",
"product_unit_quantity": "10.000000000",
"product_unit_type": {
"id": "00000000-0000-0000-0000-000000002c6c",
"name": "Gram"
},
"quantity": "10.000000000",
"quantity_assembling": "0.000000000",
"quantity_available": "10.000000000",
"status": "active",
"unit_type": {
"id": "00000000-0000-0000-0000-000000002c6c",
"name": "Gram"
}
}
],
"next_page": null
}
GET /public/v1/packages allows filtering by location_ids
GET /public/v1/packages?location_ids[]=00000000-0000-0000-0000-000000000074&location_ids[]=00000000-0000-0000-0000-000000000075
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiN2JhMGY3ZjQtM2U4Yi00OWMxLWEzMzMtYjViMzM2M2QxYTBlIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NzcwIiwidHlwIjoiYWNjZXNzIn0.aZZgOCd_NIbS9p5imMUaNO2-_qUPIrGn4_pMCO5fiN4
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 86706bfa9fa4e0000000000000000001-d67ccd168800910c-0
{
"data": [
{
"batch_number": null,
"compliance_label": "ABCDEF012345670000000045",
"custom_data": [],
"expiration_date": null,
"harvest_date": null,
"id": "00000000-0000-0000-0000-000000000018",
"is_trade_sample": false,
"license": {
"id": "00000000-0000-0000-0000-00000000001e",
"license_number": "CDPH-00000029"
},
"location": {
"id": "00000000-0000-0000-0000-000000000074",
"name": "Place 113"
},
"metrc_label": "ABCDEF012345670000000045",
"packaged_date": null,
"primary_test_result": null,
"product_id": "e0571315-087b-4d8c-836f-df1de0fc2c95",
"product_unit_quantity": "10.000000000",
"product_unit_type": {
"id": "00000000-0000-0000-0000-000000001df8",
"name": "Gram"
},
"quantity": "10.000000000",
"quantity_assembling": "0.000000000",
"quantity_available": "10.000000000",
"status": "active",
"unit_type": {
"id": "00000000-0000-0000-0000-000000001df8",
"name": "Gram"
}
},
{
"batch_number": null,
"compliance_label": "ABCDEF012345670000000047",
"custom_data": [],
"expiration_date": null,
"harvest_date": null,
"id": "00000000-0000-0000-0000-000000000019",
"is_trade_sample": false,
"license": {
"id": "00000000-0000-0000-0000-00000000001e",
"license_number": "CDPH-00000029"
},
"location": {
"id": "00000000-0000-0000-0000-000000000075",
"name": "Place 114"
},
"metrc_label": "ABCDEF012345670000000047",
"packaged_date": null,
"primary_test_result": null,
"product_id": "e7374c58-2b28-46ff-8e56-7f7f439a6cc4",
"product_unit_quantity": "10.000000000",
"product_unit_type": {
"id": "00000000-0000-0000-0000-000000001df8",
"name": "Gram"
},
"quantity": "10.000000000",
"quantity_assembling": "0.000000000",
"quantity_available": "10.000000000",
"status": "active",
"unit_type": {
"id": "00000000-0000-0000-0000-000000001df8",
"name": "Gram"
}
}
],
"next_page": null
}
GET /public/v1/packages allows filtering by status
GET /public/v1/packages?statuses[]=active&statuses[]=finished
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjQsImlhdCI6MTc3NDYyMzU2NCwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMDM5ZDg5YWUtMjg4Yi00NzNjLTg2YmMtYjEwMzhhMGEzZTRmIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYzLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTAxMyIsInR5cCI6ImFjY2VzcyJ9.UcWLGvb9f2VWbo6t3KMsVDta7dl0KKEEPpk0yr1Uu3g
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: a93088e0e209c0000000000000000001-e4c8a92ca572c273-0
{
"data": [
{
"batch_number": null,
"compliance_label": "ABCDEF012345670000000082",
"custom_data": [],
"expiration_date": null,
"harvest_date": null,
"id": "00000000-0000-0000-0000-00000000002e",
"is_trade_sample": false,
"license": {
"id": "00000000-0000-0000-0000-00000000003a",
"license_number": "CDPH-00000057"
},
"location": {
"id": "00000000-0000-0000-0000-0000000000ba",
"name": "Place 183"
},
"metrc_label": "ABCDEF012345670000000082",
"packaged_date": "2014-11-29",
"primary_test_result": null,
"product_id": "7e286d2f-d7c7-4bad-8724-5ab955198f50",
"product_unit_quantity": "1.000000000",
"product_unit_type": {
"id": "00000000-0000-0000-0000-0000000026cf",
"name": "Ounce"
},
"quantity": "1.000000000",
"quantity_assembling": "0.000000000",
"quantity_available": "1.000000000",
"status": "active",
"unit_type": {
"id": "00000000-0000-0000-0000-0000000026cf",
"name": "Ounce"
}
},
{
"batch_number": null,
"compliance_label": "ABCDEF012345670000000084",
"custom_data": [],
"expiration_date": null,
"harvest_date": null,
"id": "00000000-0000-0000-0000-00000000002f",
"is_trade_sample": false,
"license": {
"id": "00000000-0000-0000-0000-00000000003a",
"license_number": "CDPH-00000057"
},
"location": {
"id": "00000000-0000-0000-0000-0000000000bb",
"name": "Place 184"
},
"metrc_label": "ABCDEF012345670000000084",
"packaged_date": "2014-11-29",
"primary_test_result": null,
"product_id": "7472be08-71d0-4005-bb0d-f0d8d075c17b",
"product_unit_quantity": "0.000000000",
"product_unit_type": {
"id": "00000000-0000-0000-0000-0000000026cf",
"name": "Ounce"
},
"quantity": "0.000000000",
"quantity_assembling": "0.000000000",
"quantity_available": "0.000000000",
"status": "finished",
"unit_type": {
"id": "00000000-0000-0000-0000-0000000026cf",
"name": "Ounce"
}
}
],
"next_page": null
}
Get packages sorted by their creation date and filtered by various attributes
Note: The page size for this endpoint is 5000 packages per page. This endpoint returns eventually consistent data, with changes taking up to 1 second to propagate in responses.
Request
GET /public/v1/packages
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| inserted_datetime | Filter packages by their creation datetime | query | string | false | 2022-07-10T00:00:00Z, | |
| page | Pagination information | query | number | false | ?page[number]=1 | |
| location_ids | A list of location UUIDs to filter packages by. | query | array | false | ?location_ids[]=c40e87ce-0647-409b-89fa-620275d77fcc&location_ids[]=65ca530a-1ea2-439b-b4c2-598abb1fc6f3 | |
| license_number | Filter packages by license number | query | string | false | 1234567890 | |
| ids | Filter packages by package ID (same UUID string as each package's id in responses). Values that do not decode to an internal package id match no rows. | query | array | false | ?ids[]=00000000-0000-0000-0000-000000000001&ids[]=00000000-0000-0000-0000-000000000002 | |
| product_ids | Filter packages by product ID | query | array | false | ?product_ids[]=c40e87ce-0647-409b-89fa-620275d77fcc&product_ids[]=65ca530a-1ea2-439b-b4c2-598abb1fc6f3 | |
| statuses | Filter packages by their status | query | array | false | ?statuses[]=active&statuses[]=selling&statuses[]=sold | |
| updated_datetime | Filter packages by the datetime they were most recently modified | query | string | false | ,2022-07-10T00:00:00Z |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | A list of packages | Packages |
PaymentMethod
Get payment methods
GET /public/v1/payments/methods returns payment methods related to the user's company only
GET /public/v1/payment-methods
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjEsImlhdCI6MTc3NDYyMzU2MSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiNzBkNTdhODQtOTE4Ny00OGNiLWFiOGMtNjQwZjJmZjA0MmQ2IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYwLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NjkiLCJ0eXAiOiJhY2Nlc3MifQ.IRpLbKN4I9PU_BlBnYHreggEbu9ePq6g5Y38806i-38
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 9d77ea98d2bf18000000000000000001-580498cf7d3194e0-0
{
"data": [
{
"deleted_at": null,
"id": "00000000-0000-0000-0000-000000000003",
"name": "Payment Method 2"
}
],
"next_page": null
}
Get payment methods. Note: This endpoint returns eventually consistent data, with changes taking up to 1 second to propagate in responses.
Request
GET /public/v1/payment-methods
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| deleted | Filter deleted payment methods. no returns non-deleted, only returns deleted, include returns both. |
query | string | false | no |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | A list of payment methods | PaymentMethods |
Product
Get products
GET /public/products returns products related to the company
GET /public/v1/products
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiN2UyZjEwMGQtMGRlMi00M2MyLTk0MzYtYTMwYjFiNDhmZGJhIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NzEwIiwidHlwIjoiYWNjZXNzIn0.w4clIq-Pq5VhEoYHzPdi32RVc4Rdz5ESOTdcvBfw6Bw
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: fcec717c7b4568000000000000000001-5f336e76040cd1f2-0
{
"data": [
{
"brand": {
"id": "00000000-0000-0000-0000-000000000158",
"name": "Company 560",
"updated_datetime": "2030-11-01T00:00:00.000000Z"
},
"category": {
"id": "00000000-0000-0000-0000-0000000000f8",
"name": "Some category 247",
"type": "OTHER"
},
"custom_data": [
{
"id": 34,
"name": "Custom Field 11",
"value": "Custom Field Value 1"
}
],
"deleted_at": null,
"description": "test",
"description_markdown": "# test",
"external_name": "External Name",
"id": "0e7ea25b-d3d1-4cb2-86db-a8d193c79db6",
"images": [
{
"id": "00000000-0000-0000-0000-00000000000a",
"name": "Image Name 5",
"rank": 0,
"url": "https://google.com/original-5.jpg"
},
{
"id": "00000000-0000-0000-0000-00000000000b",
"name": "Image Name 6",
"rank": 1,
"url": "https://google.com/original-6.jpg"
}
],
"is_active": true,
"msrp": null,
"name": "Product 663",
"product_group": {
"id": "00000000-0000-0000-0000-0000000000f5",
"name": "Product Group 244"
},
"sku": "sku 664",
"strain": {
"id": "00000000-0000-0000-0000-000000000015",
"name": "Strain 20",
"strain_type": "INDICA"
},
"subcategory": {
"id": "00000000-0000-0000-0000-0000000000f5",
"name": "Some subcategory 244"
},
"unit_cost": null,
"unit_net_weight": "20",
"unit_net_weight_serving_size_unit_type": {
"id": "00000000-0000-0000-0000-000000001bc6",
"name": "Ounce"
},
"unit_price": "1",
"unit_serving_size": "10",
"unit_type": {
"id": "00000000-0000-0000-0000-000000001bc4",
"name": "Gram"
},
"units_per_case": null,
"updated_datetime": "2023-11-01T00:00:00.000000Z",
"vendor": {
"id": "00000000-0000-0000-0000-00000000015f",
"name": "Company 568",
"updated_datetime": "2030-11-03T00:00:00.000000Z"
}
},
{
"brand": {
"id": "00000000-0000-0000-0000-00000000015d",
"name": "Company 564",
"updated_datetime": "2030-11-02T00:00:00.000000Z"
},
"category": {
"id": "00000000-0000-0000-0000-0000000000fe",
"name": "Some category 253",
"type": "OTHER"
},
"custom_data": [
{
"id": 34,
"name": "Custom Field 11",
"value": null
}
],
"deleted_at": null,
"description": null,
"description_markdown": null,
"external_name": null,
"id": "f5db4429-21a8-4377-9903-e4a88dd9ead3",
"images": [],
"is_active": false,
"msrp": "100",
"name": "Product 676",
"product_group": {
"id": "00000000-0000-0000-0000-0000000000fb",
"name": "Product Group 250"
},
"sku": "sku 677",
"strain": null,
"subcategory": {
"id": "00000000-0000-0000-0000-0000000000fb",
"name": "Some subcategory 250"
},
"unit_cost": null,
"unit_net_weight": null,
"unit_net_weight_serving_size_unit_type": null,
"unit_price": "1",
"unit_serving_size": null,
"unit_type": {
"id": "00000000-0000-0000-0000-000000001bc2",
"name": "Pound"
},
"units_per_case": null,
"updated_datetime": "2023-11-02T00:00:00.000000Z",
"vendor": {
"id": "00000000-0000-0000-0000-000000000164",
"name": "Company 572",
"updated_datetime": "2030-11-04T00:00:00.000000Z"
}
}
],
"next_page": null
}
Get products sorted by their creation date and filtered by various attributes.
Note: The page size for this endpoint is 5000 products per page. This endpoint returns eventually consistent data, with changes taking up to 1 second to propagate in responses.
Request
GET /public/v1/products
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| product_name | Filter products by name substring | query | string | false | ||
| inserted_datetime | Filter products by their creation datetime | query | string | false | 2022-07-10T00:00:00Z, | |
| deleted | Filter deleted products. no returns non-deleted, only returns deleted, include returns both. |
query | string | false | no | |
| ids | Filter products by product ID (same UUID as each product's id in responses). | query | array | false | ?ids[]=550e8400-e29b-41d4-a716-446655440000&ids[]=6ba7b810-9dad-11d1-80b4-00c04fd430c8 | |
| page | Pagination information | query | number | false | ?page[number]=1 | |
| updated_datetime | Filter products by the datetime they were most recently modified | query | string | false | ,2022-07-10T00:00:00Z |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | A list of products | Products |
Upsert a product
POST /public/v1/products Creates a product with all optional fields set
POST /public/v1/products
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjQsImlhdCI6MTc3NDYyMzU2NCwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMzkzZWZmZTAtNGJiMC00YjQyLWFlNmUtY2NjM2Q5ZjY4YzFlIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYzLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6OTcxIiwidHlwIjoiYWNjZXNzIn0.v6_kbaevMMa7BxIHu_q7Xrvi98jvjZh1tnbfqnxumuE
{
"unit_net_weight_and_serving_size_unit_type_id": "00000000-0000-0000-0000-0000000022b6",
"id": "d2a21474-5fb3-4c60-bf09-ebf1fb959ab4",
"is_featured": true,
"description_markdown": "# My Product Description Markdown",
"wholesale_unit_price": "90.50",
"msrp": "100.5",
"custom_data": {
"571": "VIP"
},
"unit_type_id": "00000000-0000-0000-0000-0000000022c1",
"quantity_available_threshold_min": "5.5",
"total_thc": "10.4",
"brand_id": "00000000-0000-0000-0000-0000000001ea",
"sku": "12345",
"unit_price": "100",
"category_id": "00000000-0000-0000-0000-000000000163",
"unit_serving_size": "2.2",
"tags": [
"00000000-0000-0000-0000-000000000005"
],
"total_cbd": "5.2",
"unit_cost": "50.4",
"group_id": "00000000-0000-0000-0000-000000000160",
"is_inactive": true,
"units_per_case": "0.2",
"menus": [
"00000000-0000-0000-0000-00000000000a"
],
"vendor_id": "00000000-0000-0000-0000-0000000001e6",
"total_cannabinoid_unit": "PERCENT",
"menu_visibility": "INCLUDE_IN_ALL",
"inventory_tracking_method": "PACKAGE",
"description": "My Product Description",
"owner_id": "00000000-0000-0000-0000-000000000380",
"subcategory_id": "00000000-0000-0000-0000-000000000160",
"quantity_available_threshold_max": "10.5",
"upc": "036000291452",
"unit_net_weight": "3.1",
"strain_id": "00000000-0000-0000-0000-000000000018",
"name": "My Product"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 43ce5fe74d7c28000000000000000001-3ffb6ef39d877717-0
{
"data": {
"brand": {
"id": "00000000-0000-0000-0000-0000000001ea",
"name": "Company 759",
"updated_datetime": "2026-03-27T14:59:24.217277Z"
},
"category": {
"id": "00000000-0000-0000-0000-000000000163",
"name": "Some category 354",
"type": "OTHER"
},
"custom_data": [
{
"id": 38,
"name": "Custom Field 15",
"value": null
}
],
"deleted_at": null,
"description": "My Product Description",
"description_markdown": "# My Product Description Markdown",
"external_name": null,
"id": "d2a21474-5fb3-4c60-bf09-ebf1fb959ab4",
"images": [],
"is_active": false,
"msrp": "100.5",
"name": "My Product",
"product_group": {
"id": "00000000-0000-0000-0000-000000000160",
"name": "Product Group 351"
},
"sku": "12345",
"strain": {
"id": "00000000-0000-0000-0000-000000000018",
"name": "Strain 23",
"strain_type": null
},
"subcategory": {
"id": "00000000-0000-0000-0000-000000000160",
"name": "Some subcategory 351"
},
"unit_cost": "50.4",
"unit_net_weight": "3.1",
"unit_net_weight_serving_size_unit_type": {
"id": "00000000-0000-0000-0000-0000000022b6",
"name": "Ounce"
},
"unit_price": "100",
"unit_serving_size": "2.2",
"unit_type": {
"id": "00000000-0000-0000-0000-0000000022c1",
"name": "Unit"
},
"units_per_case": "0.2",
"updated_datetime": "2026-03-27T14:59:24.252377Z",
"vendor": {
"id": "00000000-0000-0000-0000-0000000001e6",
"name": "Company 750",
"updated_datetime": "2026-03-27T14:59:24.184585Z"
}
}
}
POST /public/v1/products Updates a product with all optional fields set
POST /public/v1/products
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiYjA0OTlhYzQtMGU4NC00MGQ1LTkzZDEtZWJmOWZmMTg0NDQyIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6Nzc3IiwidHlwIjoiYWNjZXNzIn0.gmh6QOygk8bq9DahhVBzGwnfUr4mlYXcSXXzNI-4Udg
{
"category_id": "00000000-0000-0000-0000-000000000112",
"id": "477614ef-487f-43d2-b3b3-774c01ea4b2f",
"inventory_tracking_method": "PACKAGE",
"name": "My Product",
"sku": "12345",
"unit_price": "100",
"unit_type_id": "00000000-0000-0000-0000-000000001e7c",
"upc": "036000291452",
"vendor_id": "00000000-0000-0000-0000-000000000181"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: f2f491040f1e80000000000000000001-9956056428350bda-0
{
"data": {
"brand": null,
"category": {
"id": "00000000-0000-0000-0000-000000000112",
"name": "Some category 273",
"type": "OTHER"
},
"custom_data": [],
"deleted_at": null,
"description": null,
"description_markdown": null,
"external_name": null,
"id": "477614ef-487f-43d2-b3b3-774c01ea4b2f",
"images": [],
"is_active": true,
"msrp": null,
"name": "My Product",
"product_group": null,
"sku": "12345",
"strain": null,
"subcategory": null,
"unit_cost": null,
"unit_net_weight": null,
"unit_net_weight_serving_size_unit_type": null,
"unit_price": "100",
"unit_serving_size": null,
"unit_type": {
"id": "00000000-0000-0000-0000-000000001e7c",
"name": "Gram"
},
"units_per_case": null,
"updated_datetime": "2026-03-27T14:59:23.538527Z",
"vendor": {
"id": "00000000-0000-0000-0000-000000000181",
"name": "Company 613",
"updated_datetime": "2026-03-27T14:59:23.475619Z"
}
}
}
POST /public/v1/products Updates a product with all optional fields set
POST /public/v1/products
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiYjA0OTlhYzQtMGU4NC00MGQ1LTkzZDEtZWJmOWZmMTg0NDQyIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6Nzc3IiwidHlwIjoiYWNjZXNzIn0.gmh6QOygk8bq9DahhVBzGwnfUr4mlYXcSXXzNI-4Udg
{
"unit_net_weight_and_serving_size_unit_type_id": "00000000-0000-0000-0000-000000001e7e",
"id": "477614ef-487f-43d2-b3b3-774c01ea4b2f",
"is_featured": true,
"wholesale_unit_price": "90.50",
"msrp": "100.5",
"unit_type_id": "00000000-0000-0000-0000-000000001e85",
"quantity_available_threshold_min": "5.5",
"total_thc": "10.4",
"brand_id": "00000000-0000-0000-0000-00000000018e",
"sku": "45678",
"unit_price": "200",
"category_id": "00000000-0000-0000-0000-000000000117",
"unit_serving_size": "2.2",
"tags": [
"00000000-0000-0000-0000-000000000004"
],
"total_cbd": "5.2",
"unit_cost": "50.4",
"group_id": "00000000-0000-0000-0000-000000000114",
"is_inactive": true,
"units_per_case": "0.2",
"menus": [
"00000000-0000-0000-0000-000000000009"
],
"vendor_id": "00000000-0000-0000-0000-00000000018a",
"total_cannabinoid_unit": "PERCENT",
"menu_visibility": "INCLUDE_IN_ALL",
"inventory_tracking_method": "PACKAGE",
"description": "My Product Description",
"owner_id": "00000000-0000-0000-0000-000000000331",
"subcategory_id": "00000000-0000-0000-0000-000000000114",
"external_name": "External Name",
"quantity_available_threshold_max": "10.5",
"upc": "036000291453",
"unit_net_weight": "3.1",
"strain_id": "00000000-0000-0000-0000-000000000016",
"name": "Updated Name"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: f2f491040f1e80000000000000000001-69361c112a26c2d1-0
{
"data": {
"brand": {
"id": "00000000-0000-0000-0000-00000000018e",
"name": "Company 631",
"updated_datetime": "2026-03-27T14:59:23.614332Z"
},
"category": {
"id": "00000000-0000-0000-0000-000000000117",
"name": "Some category 278",
"type": "OTHER"
},
"custom_data": [],
"deleted_at": null,
"description": "My Product Description",
"description_markdown": "My Product Description",
"external_name": "External Name",
"id": "477614ef-487f-43d2-b3b3-774c01ea4b2f",
"images": [],
"is_active": false,
"msrp": "100.5",
"name": "Updated Name",
"product_group": {
"id": "00000000-0000-0000-0000-000000000114",
"name": "Product Group 275"
},
"sku": "45678",
"strain": {
"id": "00000000-0000-0000-0000-000000000016",
"name": "Strain 21",
"strain_type": null
},
"subcategory": {
"id": "00000000-0000-0000-0000-000000000114",
"name": "Some subcategory 275"
},
"unit_cost": "50.4",
"unit_net_weight": "3.1",
"unit_net_weight_serving_size_unit_type": {
"id": "00000000-0000-0000-0000-000000001e7e",
"name": "Ounce"
},
"unit_price": "200",
"unit_serving_size": "2.2",
"unit_type": {
"id": "00000000-0000-0000-0000-000000001e85",
"name": "Unit"
},
"units_per_case": "0.2",
"updated_datetime": "2026-03-27T14:59:23.651748Z",
"vendor": {
"id": "00000000-0000-0000-0000-00000000018a",
"name": "Company 626",
"updated_datetime": "2026-03-27T14:59:23.589898Z"
}
}
}
POST /public/v1/products Menus act as expected
POST /public/v1/products
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMDI1MzkxNmEtYTdkMy00MTYxLTk1NTUtNmUzNTRkOTIwMDIyIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NTczIiwidHlwIjoiYWNjZXNzIn0.A3Cn-RJCu9cVmuDF4iG3JIKVJwyubbtRpWXxCotNbmE
{
"category_id": "00000000-0000-0000-0000-0000000000b5",
"id": "a71dee9b-7013-4bc4-9a3c-e0c092e3504e",
"inventory_tracking_method": "PACKAGE",
"menu_visibility": "INCLUDE_IN_ALL",
"menus": [
"00000000-0000-0000-0000-000000000006"
],
"name": "My Product",
"sku": "12345",
"unit_price": "100",
"unit_type_id": "00000000-0000-0000-0000-0000000015dc",
"upc": "036000291452",
"vendor_id": "00000000-0000-0000-0000-00000000010e"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: dde8a01aaaad68000000000000000001-08b6c73352672ef1-0
{
"data": {
"brand": null,
"category": {
"id": "00000000-0000-0000-0000-0000000000b5",
"name": "Some category 180",
"type": "OTHER"
},
"custom_data": [],
"deleted_at": null,
"description": null,
"description_markdown": null,
"external_name": null,
"id": "a71dee9b-7013-4bc4-9a3c-e0c092e3504e",
"images": [],
"is_active": true,
"msrp": null,
"name": "My Product",
"product_group": null,
"sku": "12345",
"strain": null,
"subcategory": null,
"unit_cost": null,
"unit_net_weight": null,
"unit_net_weight_serving_size_unit_type": null,
"unit_price": "100",
"unit_serving_size": null,
"unit_type": {
"id": "00000000-0000-0000-0000-0000000015dc",
"name": "Gram"
},
"units_per_case": null,
"updated_datetime": "2026-03-27T14:59:23.024899Z",
"vendor": {
"id": "00000000-0000-0000-0000-00000000010e",
"name": "Company 444",
"updated_datetime": "2026-03-27T14:59:22.874802Z"
}
}
}
POST /public/v1/products Menus act as expected
POST /public/v1/products
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMDI1MzkxNmEtYTdkMy00MTYxLTk1NTUtNmUzNTRkOTIwMDIyIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NTczIiwidHlwIjoiYWNjZXNzIn0.A3Cn-RJCu9cVmuDF4iG3JIKVJwyubbtRpWXxCotNbmE
{
"category_id": "00000000-0000-0000-0000-0000000000b5",
"id": "a71dee9b-7013-4bc4-9a3c-e0c092e3504e",
"inventory_tracking_method": "PACKAGE",
"menu_visibility": "DO_NOT_INCLUDE",
"menus": [
"00000000-0000-0000-0000-000000000006",
"00000000-0000-0000-0000-000000000007"
],
"name": "My Product",
"sku": "12345",
"tags": [],
"unit_price": "100",
"unit_type_id": "00000000-0000-0000-0000-0000000015dc",
"upc": "036000291452",
"vendor_id": "00000000-0000-0000-0000-00000000010e"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: dde8a01aaaad68000000000000000001-40e94fe19954f93b-0
{
"data": {
"brand": null,
"category": {
"id": "00000000-0000-0000-0000-0000000000b5",
"name": "Some category 180",
"type": "OTHER"
},
"custom_data": [],
"deleted_at": null,
"description": null,
"description_markdown": null,
"external_name": null,
"id": "a71dee9b-7013-4bc4-9a3c-e0c092e3504e",
"images": [],
"is_active": true,
"msrp": null,
"name": "My Product",
"product_group": null,
"sku": "12345",
"strain": null,
"subcategory": null,
"unit_cost": null,
"unit_net_weight": null,
"unit_net_weight_serving_size_unit_type": null,
"unit_price": "100",
"unit_serving_size": null,
"unit_type": {
"id": "00000000-0000-0000-0000-0000000015dc",
"name": "Gram"
},
"units_per_case": null,
"updated_datetime": "2026-03-27T14:59:23.115055Z",
"vendor": {
"id": "00000000-0000-0000-0000-00000000010e",
"name": "Company 444",
"updated_datetime": "2026-03-27T14:59:22.874802Z"
}
}
}
POST /public/v1/products Menus act as expected
POST /public/v1/products
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMDI1MzkxNmEtYTdkMy00MTYxLTk1NTUtNmUzNTRkOTIwMDIyIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NTczIiwidHlwIjoiYWNjZXNzIn0.A3Cn-RJCu9cVmuDF4iG3JIKVJwyubbtRpWXxCotNbmE
{
"category_id": "00000000-0000-0000-0000-0000000000b5",
"id": "a71dee9b-7013-4bc4-9a3c-e0c092e3504e",
"inventory_tracking_method": "PACKAGE",
"menu_visibility": "INCLUDE_IN_SELECT",
"menus": [
"00000000-0000-0000-0000-000000000006",
"00000000-0000-0000-0000-000000000007"
],
"name": "My Product",
"sku": "12345",
"tags": [],
"unit_price": "100",
"unit_type_id": "00000000-0000-0000-0000-0000000015dc",
"upc": "036000291452",
"vendor_id": "00000000-0000-0000-0000-00000000010e"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: dde8a01aaaad68000000000000000001-435137e42e1e27cf-0
{
"data": {
"brand": null,
"category": {
"id": "00000000-0000-0000-0000-0000000000b5",
"name": "Some category 180",
"type": "OTHER"
},
"custom_data": [],
"deleted_at": null,
"description": null,
"description_markdown": null,
"external_name": null,
"id": "a71dee9b-7013-4bc4-9a3c-e0c092e3504e",
"images": [],
"is_active": true,
"msrp": null,
"name": "My Product",
"product_group": null,
"sku": "12345",
"strain": null,
"subcategory": null,
"unit_cost": null,
"unit_net_weight": null,
"unit_net_weight_serving_size_unit_type": null,
"unit_price": "100",
"unit_serving_size": null,
"unit_type": {
"id": "00000000-0000-0000-0000-0000000015dc",
"name": "Gram"
},
"units_per_case": null,
"updated_datetime": "2026-03-27T14:59:23.170190Z",
"vendor": {
"id": "00000000-0000-0000-0000-00000000010e",
"name": "Company 444",
"updated_datetime": "2026-03-27T14:59:22.874802Z"
}
}
}
POST /public/v1/products Menus act as expected
POST /public/v1/products
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMDI1MzkxNmEtYTdkMy00MTYxLTk1NTUtNmUzNTRkOTIwMDIyIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NTczIiwidHlwIjoiYWNjZXNzIn0.A3Cn-RJCu9cVmuDF4iG3JIKVJwyubbtRpWXxCotNbmE
{
"category_id": "00000000-0000-0000-0000-0000000000b5",
"id": "a71dee9b-7013-4bc4-9a3c-e0c092e3504e",
"inventory_tracking_method": "PACKAGE",
"menu_visibility": "INCLUDE_IN_SELECT",
"menus": [
"00000000-0000-0000-0000-000000000007"
],
"name": "My Product",
"sku": "12345",
"unit_price": "100",
"unit_type_id": "00000000-0000-0000-0000-0000000015dc",
"upc": "036000291452",
"vendor_id": "00000000-0000-0000-0000-00000000010e"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: dde8a01aaaad68000000000000000001-d19872c28dceb8e4-0
{
"data": {
"brand": null,
"category": {
"id": "00000000-0000-0000-0000-0000000000b5",
"name": "Some category 180",
"type": "OTHER"
},
"custom_data": [],
"deleted_at": null,
"description": null,
"description_markdown": null,
"external_name": null,
"id": "a71dee9b-7013-4bc4-9a3c-e0c092e3504e",
"images": [],
"is_active": true,
"msrp": null,
"name": "My Product",
"product_group": null,
"sku": "12345",
"strain": null,
"subcategory": null,
"unit_cost": null,
"unit_net_weight": null,
"unit_net_weight_serving_size_unit_type": null,
"unit_price": "100",
"unit_serving_size": null,
"unit_type": {
"id": "00000000-0000-0000-0000-0000000015dc",
"name": "Gram"
},
"units_per_case": null,
"updated_datetime": "2026-03-27T14:59:23.217855Z",
"vendor": {
"id": "00000000-0000-0000-0000-00000000010e",
"name": "Company 444",
"updated_datetime": "2026-03-27T14:59:22.874802Z"
}
}
}
POST /public/v1/products Menus act as expected
POST /public/v1/products
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMDI1MzkxNmEtYTdkMy00MTYxLTk1NTUtNmUzNTRkOTIwMDIyIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NTczIiwidHlwIjoiYWNjZXNzIn0.A3Cn-RJCu9cVmuDF4iG3JIKVJwyubbtRpWXxCotNbmE
{
"category_id": "00000000-0000-0000-0000-0000000000b5",
"id": "a71dee9b-7013-4bc4-9a3c-e0c092e3504e",
"inventory_tracking_method": "PACKAGE",
"menu_visibility": "INCLUDE_IN_SELECT",
"menus": [],
"name": "My Product",
"sku": "12345",
"unit_price": "100",
"unit_type_id": "00000000-0000-0000-0000-0000000015dc",
"upc": "036000291452",
"vendor_id": "00000000-0000-0000-0000-00000000010e"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: dde8a01aaaad68000000000000000001-c304e2cf42c1f69a-0
{
"data": {
"brand": null,
"category": {
"id": "00000000-0000-0000-0000-0000000000b5",
"name": "Some category 180",
"type": "OTHER"
},
"custom_data": [],
"deleted_at": null,
"description": null,
"description_markdown": null,
"external_name": null,
"id": "a71dee9b-7013-4bc4-9a3c-e0c092e3504e",
"images": [],
"is_active": true,
"msrp": null,
"name": "My Product",
"product_group": null,
"sku": "12345",
"strain": null,
"subcategory": null,
"unit_cost": null,
"unit_net_weight": null,
"unit_net_weight_serving_size_unit_type": null,
"unit_price": "100",
"unit_serving_size": null,
"unit_type": {
"id": "00000000-0000-0000-0000-0000000015dc",
"name": "Gram"
},
"units_per_case": null,
"updated_datetime": "2026-03-27T14:59:23.255277Z",
"vendor": {
"id": "00000000-0000-0000-0000-00000000010e",
"name": "Company 444",
"updated_datetime": "2026-03-27T14:59:22.874802Z"
}
}
}
POST /public/v1/products Error pointers are properly transformed to reflect the field name that our api users expect
POST /public/v1/products
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjEsImlhdCI6MTc3NDYyMzU2MSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMGJjYzVkYWMtZDYyYi00ODk4LTkyZmMtNmRiZjgyMzgxZmRmIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYwLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTM4IiwidHlwIjoiYWNjZXNzIn0.KKisZ9GOmpNDMg2HvCmGJFYpdZetIUAelffEsUZP_kY
{
"id": "46710fb5-96d0-4997-a540-1fbc0c16a11b",
"menu_visibility": "INCLUDE_IN_ALL",
"quantity_available_threshold_max": "-4.5",
"quantity_available_threshold_min": "-5.5",
"unit_net_weight": "3.1",
"unit_serving_size": "5.2"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: 0093104bc20f85900000000000000001-abe38b81dee7f749-0
{
"errors": [
{
"context": {
"id": "46710fb5-96d0-4997-a540-1fbc0c16a11b"
},
"message": "A unit type needs to be selected when setting Unit Net Weight/Volume or Unit Serving Size",
"pointer": [
"unit_net_weight_and_serving_size_unit_type_id"
],
"section": "body"
},
{
"context": {
"id": "46710fb5-96d0-4997-a540-1fbc0c16a11b"
},
"message": "Unit Serving Size can't be greater than Unit Net Weight/Volume",
"pointer": [
"unit_serving_size"
],
"section": "body"
},
{
"context": {
"id": "46710fb5-96d0-4997-a540-1fbc0c16a11b"
},
"message": "Cannot be negative",
"pointer": [
"quantity_available_threshold_max"
],
"section": "body"
},
{
"context": {
"id": "46710fb5-96d0-4997-a540-1fbc0c16a11b"
},
"message": "Cannot be negative",
"pointer": [
"quantity_available_threshold_min"
],
"section": "body"
}
]
}
POST /public/v1/products Errors when threshold max is less than threshold min
POST /public/v1/products
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiMmZjYjljMjItZjBhNi00ODg2LTlkMDctMzVkNTUwMzI0YWFmIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6ODc1IiwidHlwIjoiYWNjZXNzIn0.brUeCTbOYqi8GItRnTvCGOFCYb6EssTsjxXwtKVeuYo
{
"id": "e714d238-1856-48b4-be76-21e0afc62db9",
"quantity_available_threshold_max": "4.5",
"quantity_available_threshold_min": "5.5"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: eee0e385c1be80000000000000000001-d66e8e9f548e61a5-0
{
"errors": [
{
"context": {
"id": "e714d238-1856-48b4-be76-21e0afc62db9"
},
"message": "Must be greater than threshold min",
"pointer": [
"quantity_available_threshold_max"
],
"section": "body"
},
{
"context": {
"id": "e714d238-1856-48b4-be76-21e0afc62db9"
},
"message": "Must be less than threshold max",
"pointer": [
"quantity_available_threshold_min"
],
"section": "body"
}
]
}
POST /public/v1/products Cannot use associations from another company
POST /public/v1/products
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiZjE0MzQ4MjItMDdkYi00NGZkLTlkMTktNGExYzA3OWEwNjU0IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NDM1IiwidHlwIjoiYWNjZXNzIn0.V2bpfdJwPjsaDm6lbGPKP9WsgVRWx6_CXGqZIrLip-w
{
"brand_id": "00000000-0000-0000-0000-0000000000d4",
"category_id": "00000000-0000-0000-0000-00000000008b",
"cbd": "5.2",
"description": "My Product Description",
"description_markdown": "# My Product Description Markdown",
"group_id": "00000000-0000-0000-0000-00000000008f",
"id": "a4f7a6a7-4a1f-41e3-82c0-b8fa1bd9d368",
"inventory_tracking_method": "PACKAGE",
"is_featured": true,
"is_inactive": true,
"menu_visibility": "INCLUDE_IN_ALL",
"menus": [
"00000000-0000-0000-0000-000000000003",
"00000000-0000-0000-0000-000000000004",
"00000000-0000-0000-0000-000000000005"
],
"msrp": "100.5",
"name": "My Product",
"owner_id": "00000000-0000-0000-0000-0000000001bb",
"quantity_available_threshold_max": "10.5",
"quantity_available_threshold_min": "5.5555",
"sku": "12345",
"strain_id": "00000000-0000-0000-0000-000000000014",
"subcategory_id": "00000000-0000-0000-0000-00000000008d",
"tags": [
"00000000-0000-0000-0000-000000000001",
"00000000-0000-0000-0000-000000000002",
"00000000-0000-0000-0000-000000000003"
],
"thc": "10.4",
"unit_cost": "50.4",
"unit_net_weight": "3.1",
"unit_net_weight_and_serving_size_unit_type_id": "00000000-0000-0000-0000-0000000010f1",
"unit_price": "100",
"unit_serving_size": "2.2",
"unit_type_id": "00000000-0000-0000-0000-0000000010f8",
"units_per_case": "0.2",
"upc": "036000291452",
"vendor_id": "00000000-0000-0000-0000-0000000000cd",
"wholesale_unit_price": "90.50"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: c8793e5c3383a0000000000000000001-91e92ecfbb4ff4c6-0
{
"errors": [
{
"context": {
"id": "a4f7a6a7-4a1f-41e3-82c0-b8fa1bd9d368"
},
"message": "Brand does not exist",
"pointer": [
"brand_id"
],
"section": "body"
},
{
"context": {
"id": "a4f7a6a7-4a1f-41e3-82c0-b8fa1bd9d368"
},
"message": "Category does not exist",
"pointer": [
"category_id"
],
"section": "body"
},
{
"context": {
"id": "a4f7a6a7-4a1f-41e3-82c0-b8fa1bd9d368"
},
"message": "Vendor does not exist",
"pointer": [
"vendor_id"
],
"section": "body"
},
{
"context": {
"id": "a4f7a6a7-4a1f-41e3-82c0-b8fa1bd9d368"
},
"message": "Group does not exist",
"pointer": [
"group_id"
],
"section": "body"
},
{
"context": {
"id": "a4f7a6a7-4a1f-41e3-82c0-b8fa1bd9d368"
},
"message": "Serving unit type does not exist",
"pointer": [
"unit_net_weight_and_serving_size_unit_type_id"
],
"section": "body"
},
{
"context": {
"id": "a4f7a6a7-4a1f-41e3-82c0-b8fa1bd9d368"
},
"message": "Owner does not exist",
"pointer": [
"owner_id"
],
"section": "body"
},
{
"context": {
"id": "a4f7a6a7-4a1f-41e3-82c0-b8fa1bd9d368"
},
"message": "Strain does not exist",
"pointer": [
"strain_id"
],
"section": "body"
},
{
"context": {
"id": "a4f7a6a7-4a1f-41e3-82c0-b8fa1bd9d368"
},
"message": "Subcategory does not belong to the product category",
"pointer": [
"subcategory_id"
],
"section": "body"
},
{
"context": {
"id": "a4f7a6a7-4a1f-41e3-82c0-b8fa1bd9d368"
},
"message": "One or more of the provided tags do not exist",
"pointer": [
"tags"
],
"section": "body"
},
{
"context": {
"id": "a4f7a6a7-4a1f-41e3-82c0-b8fa1bd9d368"
},
"message": "Unit type does not exist",
"pointer": [
"unit_type_id"
],
"section": "body"
},
{
"context": {},
"message": "Menu does not exist",
"pointer": [
"menus",
0,
"00000000-0000-0000-0000-000000000003"
],
"section": "body"
},
{
"context": {},
"message": "Menu does not exist",
"pointer": [
"menus",
1,
"00000000-0000-0000-0000-000000000004"
],
"section": "body"
}
]
}
Upsert a single product. To update an existing product, pass in an existing product ID in the id field. When updating a product, you must pass in all fields (no sparse update currently supported).Any existing tag you do not pass in to tags will be deleted. If the menu_visibility field isset to INCLUDE_IN_SELECT, any existing menu that you do not pass into menus will be deleted.
Request
POST /public/v1/products
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| id | Unique ID for this product. If it exists, an update will be performed; otherwise, it will be used as the ID of a new product record | query | string | false | ||
| inventory_tracking_method | Once the tracking method is set for a product, it cannot be changed. The tracking method can be one of the following: PACKAGE: The inventory will be defined by packages. PRODUCT: Not grouped in any manner. The inventory simply exists on your product that you can add or remove as you transact. BATCH: Grouped by batches. Batches share common traits such as expiration dates and test results. | query | string | false | PACKAGE | |
| sku | Stock Keeping Unit (SKU) for this product | query | string | false | SKU123 | |
| name | Name of the product | query | string | false | King Size Pre-rolls | |
| vendor_id | The ID of the company_relationship association with the vendor (company) that supplies this product. | query | string | false | ||
| category_id | The ID of the product category of the product. | query | string | false | ||
| external_name | Customer-facing name for DistruCommerce menus and Order Tracker. Defaults to Product Name if left blank | query | string | false | ||
| unit_type_id | The ID of the unit type the product. | query | string | false | ||
| unit_price | The sale price of the product per unit. | query | number | false | ||
| description | Description of the product. If this field is provided and description_markdown is not, the description field will overwrite any existing description_markdown field. | query | string | false | A pack of 5 pre-rolls | |
| description_markdown | The description of the product in markdown format. If this field is provided, description must also be provided. The markdown display only supports italic, bold, strikethrough and links. Use any other markdown formatting at your own risk. | query | string | false | A pack of 5 pre-rolls | |
| upc | Universal Product Code (UPC) for this product | query | string | false | 123456789012 | |
| subcategory_id | The ID of the product subcategory of the product. The provided subcategory must be a child of the provided category. | query | string | false | ||
| group_id | The ID of the product's group. | query | string | false | ||
| brand_id | The ID of the company_relationship association with the brand (company) that is associated with this product. | query | query | false | ||
| quantity_available_threshold_min | The minimum quantity of the product you'd like to maintain. When the product inventory count dips below this number, it will automatically be included in scheduled Low Inventory Reports. | query | number | false | ||
| quantity_available_threshold_max | The maximum quantity of the product you'd like to maintain. When the product inventory count exceeds this number, it will automatically be included in scheduled Inventory Reports. | query | number | false | ||
| units_per_case | The number of units in a case of the product. | query | number | false | ||
| unit_cost | The cost of the product per unit. | query | number | false | ||
| msrp | The Manufacturer's Suggested Retail Price (MSRP) of the product per unit. If you have POS integrations enabled in Distru, this may be synced to your POS | query | number | false | ||
| wholesale_unit_price | The wholesale price of the product per unit. | query | number | false | ||
| is_featured | Whether the product is featured. Featured products will be displayed at the top of menus. | query | boolean | false | ||
| strain_id | The ID of the strain associated with the product. | query | string | false | ||
| owner_id | The ID of the user that is deemed to be the owner of the product. | query | string | false | ||
| is_inactive | Whether the product is inactive from use. Inactive products can be set to active at any time. | query | boolean | false | ||
| total_cannabinoid_unit | The unit of the THC/CBD content of the product (MG or PERCENT). | query | string | false | ||
| total_thc | The THC content of the product in the unit specified by total_cannabinoid_unit. Must also include total_cannabinoid_unit. | query | string | false | ||
| total_cbd | The CBD content of the product in the unit specified by total_cannabinoid_unit. Must also include total_cannabinoid_unit. | query | string | false | ||
| menu_visibility | This key is responsible for which menus (if any) the product will be displayed in. DO_NOT_INCLUDE: The product will not be displayed in any menus. INCLUDE_IN_ALL: The product will be displayed in all menus. INCLUDE_IN_SELECT: The product will be displayed in menus that have been explicitly selected (passed into the menus list). | query | string | false | ||
| unit_net_weight | The net weight of the product per unit. | query | number | false | ||
| unit_serving_size | The serving size of the product per unit. | query | number | false | ||
| unit_net_weight_and_serving_size_unit_type_id | The ID of the unit type that the net quantity per unit and serving size are measured in. This field should be null unless the product's unit type is count-based. If this field is set, the act of changing the category from 'Unit' will throw an error. | query | string | false | ||
| tags | A list of tags associated with the product. | query | array | false | ["0ef8347c-b714-4cd9-ba0e-872488bc9244", "daa0294c-833c-42bd-a133-b4c9e7f64017"] | |
| menus | A list of menus you would like this product to be included in. This field will only be used if the menu_visibility key is set to INCLUDE_IN_SELECT. | query | array | false | ["0ef8347c-b714-4cd9-ba0e-872488bc9244", "daa0294c-833c-42bd-a133-b4c9e7f64017"] |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | A single product | Product |
ProductPosMapping
Delete a product POS mapping
DELETE /public/v1/product-pos-mappings/:id deletes a POS mapping
DELETE /public/v1/product-pos-mappings/8
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMzcwYzQ2MDMtOGE5NS00ZjM2LWI4ZTgtMDI3YWFkMDQxOWIxIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NTE5IiwidHlwIjoiYWNjZXNzIn0.mnJZFm5ylqYSVWoOSlZe6Cl7B0vSbKPAY0OLvQvj1oU
Response
204
cache-control: max-age=0, private, must-revalidate
b3: 34f85bd5fb5938000000000000000001-002b46ef057f460f-0
Request
DELETE /public/v1/product-pos-mappings/{id}
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| id | Mapping ID | path | string | true |
Responses
| Status | Description | Schema |
|---|---|---|
| 204 | No Content | |
| 401 | Unauthorized | |
| 404 | Not Found |
List product POS mappings
GET /public/v1/product-pos-mappings returns all POS mappings for company products and supports filtering
GET /public/v1/product-pos-mappings
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiNjU0N2NmZDEtNGQ4Yi00ZjY5LWEyNTEtNDI0NjliMzFlNzZkIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MzU3IiwidHlwIjoiYWNjZXNzIn0.gnMtp7YUGdJbcfrzYBHfB4R82MPwuEcpke76jcGfNT8
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: acc912798f7d68000000000000000001-1d726685d6785570-0
{
"data": [
{
"blaze_asset_id": null,
"blaze_product_id": "blaze_123",
"blaze_retailer_id": "40323a62-ea55-4c25-995b-53f7a7284b3e",
"id": 5,
"inserted_at": "2026-03-27T14:59:22.338634Z",
"pos_type": "BLAZE",
"product_id": "11f68c3b-a616-44e1-a8a1-d75044a2d92d",
"updated_at": "2026-03-27T14:59:22.338634Z"
},
{
"dutchie_product_id": 456,
"dutchie_retailer_id": "76f9c7db-309a-4a48-b21b-9ee02e9cf7d0",
"id": 6,
"inserted_at": "2026-03-27T14:59:22.348605Z",
"pos_type": "DUTCHIE",
"product_id": "d5866f9e-4928-46b3-a76e-135ce0d44034",
"updated_at": "2026-03-27T14:59:22.348605Z"
}
],
"next_page": "https://www.example.com/public/v1/product-pos-mappings?page[number]=2"
}
Get POS mappings with optional filtering by product_id or retailer_id
Request
GET /public/v1/product-pos-mappings
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| product_id | Filter by product ID | query | string | false | ||
| blaze_retailer_id | Filter by Blaze retailer ID | query | string | false | ||
| dutchie_retailer_id | Filter by Dutchie retailer ID | query | string | false | ||
| treez_retailer_id | Filter by Treez retailer ID | query | string | false |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | Success | ProductPosMappingsResponse |
| 400 | Bad Request | |
| 401 | Unauthorized |
Create or update a product POS mapping
POST /public/v1/product-pos-mappings (upsert) creates a new Blaze mapping
POST /public/v1/product-pos-mappings
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiZDdkODY1ZjAtYzhjMi00ZmUzLTg2MDMtY2U3MmEwZmQ2YzY5IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NTMyIiwidHlwIjoiYWNjZXNzIn0.P_WWnH69jLjp0waE0FZUMWqJf1rhTUjqkC0Ay4dyRu8
{
"blaze_product_id": "blaze_123",
"blaze_retailer_id": "67003a42-221f-4b9a-9e1b-d40afca57d4d",
"product_id": "ad9872ae-a8a3-4d16-bba7-4cfe2ea6e6fe"
}
Response
201
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 06f2d91777bc4b000000000000000001-120ebddacefd69ed-0
{
"data": {
"blaze_asset_id": null,
"blaze_product_id": "blaze_123",
"blaze_retailer_id": "67003a42-221f-4b9a-9e1b-d40afca57d4d",
"id": 9,
"inserted_at": "2026-03-27T14:59:22.805202Z",
"pos_type": "BLAZE",
"product_id": "ad9872ae-a8a3-4d16-bba7-4cfe2ea6e6fe",
"updated_at": "2026-03-27T14:59:22.805202Z"
}
}
POST /public/v1/product-pos-mappings (upsert) updates an existing mapping (upsert behavior)
POST /public/v1/product-pos-mappings
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjEsImlhdCI6MTc3NDYyMzU2MSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiOGUxOGExNzMtNDZiZS00MjZjLTgwY2ItOWQ2YjBhN2VlZjY2IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYwLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTQiLCJ0eXAiOiJhY2Nlc3MifQ.PuyL663WDh3cZ7Hb_Q0gMQHXd57QN2BCfADpkV0ZQ_0
{
"blaze_product_id": "blaze_456",
"blaze_retailer_id": "d0c43cd4-e158-47a8-98cc-59b576a7a80a",
"product_id": "c7c39023-c9cd-43c6-b3b3-a2feefb0f9c1"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 5f041c26841f08000000000000000001-cac738a319941bba-0
{
"data": {
"blaze_asset_id": null,
"blaze_product_id": "blaze_456",
"blaze_retailer_id": "d0c43cd4-e158-47a8-98cc-59b576a7a80a",
"id": 1,
"inserted_at": "2026-03-27T14:59:21.393947Z",
"pos_type": "BLAZE",
"product_id": "c7c39023-c9cd-43c6-b3b3-a2feefb0f9c1",
"updated_at": "2026-03-27T14:59:21.458925Z"
}
}
Upserts a POS mapping - creates if new, updates if exists.
The system determines if a mapping already exists by checking for an existing mapping with the same product_id and retailer_id combination. If found, it updates the existing mapping. If not found, it creates a new mapping.
Returns 201 for new mappings, 200 for updates.
Request
POST /public/v1/product-pos-mappings
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| mapping | POS mapping data | body | UpsertProductPosMapping | true |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | Updated existing mapping | ProductPosMappingResponse |
| 201 | Created new mapping | ProductPosMappingResponse |
| 400 | Bad Request | |
| 401 | Unauthorized |
Purchase
Get purchases
GET /public/v1/purchases returns purchases related to the company
GET /public/v1/purchases
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjUsImlhdCI6MTc3NDYyMzU2NSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiNTAzNzE3YmItMjM3MS00OWU4LWJkN2QtYmRiNjdiNDk2NTliIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY0LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTE5NyIsInR5cCI6ImFjY2VzcyJ9.c9iwrZkvCeMU2zj-XDCGCkrjF04clRJD84iQOsML44g
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: a6501b4018b720000000000000000001-561a4ce0f9c8e74a-0
{
"data": [
{
"charges": [],
"company": {
"id": "00000000-0000-0000-0000-00000000024a",
"name": "Company 870",
"updated_datetime": "2026-03-27T14:59:25.096783Z"
},
"custom_data": [
{
"id": 40,
"name": "Custom Field 17",
"value": null
}
],
"due_datetime": "2026-03-27T14:59:25.116328Z",
"id": "00000000-0000-0000-0000-000000000022",
"inserted_datetime": "2026-03-27T14:59:25.116830Z",
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000001a3",
"name": "B1287"
},
"compliance_quantity": null,
"id": "c4198913-2b9b-4842-9918-3c449aeab824",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-00000000035b",
"id": "00000000-0000-0000-0000-0000000000e5",
"license_id": null,
"name": "Place 226"
},
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "61326b2c-af69-424f-bb49-5cd14e86b9c2",
"name": "Product 1272",
"sku": "sku 1273",
"updated_datetime": "2026-03-27T14:59:25.121529Z"
},
"quantity": "15.000000000",
"received_quantity": "0.000000000"
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000001a5",
"name": "B1290"
},
"compliance_quantity": null,
"id": "48ba7e28-7b26-4b99-beef-5f73e4de3b51",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-00000000035b",
"id": "00000000-0000-0000-0000-0000000000e5",
"license_id": null,
"name": "Place 226"
},
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "9753ff26-9562-41b3-ba9a-be5e828f2245",
"name": "Product 1277",
"sku": "sku 1278",
"updated_datetime": "2026-03-27T14:59:25.126711Z"
},
"quantity": "10.000000000",
"received_quantity": "0.000000000"
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000001a6",
"name": "B1291"
},
"compliance_quantity": null,
"id": "e88ac739-9a90-4b52-9a51-87cf7d9f4990",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-00000000035b",
"id": "00000000-0000-0000-0000-0000000000e5",
"license_id": null,
"name": "Place 226"
},
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "1abb81b7-a158-4b21-802a-94f846f27b01",
"name": "Product 1279",
"sku": "sku 1280",
"updated_datetime": "2026-03-27T14:59:25.130713Z"
},
"quantity": "5.000000000",
"received_quantity": "0.000000000"
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000001a8",
"name": "B1292"
},
"compliance_quantity": null,
"id": "2f10b836-f121-4505-87b5-ecbf5f2c048e",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-00000000035b",
"id": "00000000-0000-0000-0000-0000000000e5",
"license_id": null,
"name": "Place 226"
},
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "9c24cbe2-1e29-4871-914c-c5cf56ea9551",
"name": "Product 1285",
"sku": "sku 1286",
"updated_datetime": "2026-03-27T14:59:25.135080Z"
},
"quantity": "2.000000000",
"received_quantity": "0.000000000"
}
],
"order_datetime": "2026-03-27T14:59:25.116327Z",
"purchase_number": "Purchase #30",
"status": "PENDING",
"total": "32.00",
"updated_datetime": "2026-03-27T14:59:25.116830Z"
},
{
"charges": [
{
"id": "e1f130e2-4e71-4481-b9bc-8d9423105712",
"name": "C1",
"percent": "10.0000",
"price": "1.00",
"type": "CHARGE",
"unit_type": "PERCENT"
}
],
"company": {
"id": "00000000-0000-0000-0000-000000000246",
"name": "Company 865",
"updated_datetime": "2030-11-01T00:00:00.000000Z"
},
"custom_data": [
{
"id": 40,
"name": "Custom Field 17",
"value": "Custom Field Value 1"
}
],
"due_datetime": "2020-01-01T00:00:01.000000Z",
"id": "00000000-0000-0000-0000-000000000021",
"inserted_datetime": "2020-01-01T00:00:03.000000Z",
"items": [
{
"batch": {
"batch_number": "UID1",
"id": "00000000-0000-0000-0000-000000000198",
"name": "B1"
},
"compliance_quantity": "1.0000",
"id": "3d82ce10-9fa0-469d-8ef1-81e15b54ca2e",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-00000000035b",
"id": "00000000-0000-0000-0000-0000000000da",
"license_id": "00000000-0000-0000-0000-000000000045",
"name": "Place 215"
},
"package": {
"batch_number": "B1",
"compliance_label": "ABCDEF012345670000000111",
"id": "00000000-0000-0000-0000-000000000039",
"metrc_label": "ABCDEF012345670000000111",
"status": "active"
},
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "d3a5e380-ac58-4b93-b1c5-eb17513bb16c",
"name": "P1",
"sku": "SKU1",
"updated_datetime": "2023-11-02T00:00:00.000000Z"
},
"quantity": "1.000000000",
"received_quantity": "1.000000000"
}
],
"order_datetime": "2020-01-01T00:00:02.000000Z",
"purchase_number": "SO-123",
"status": "COMPLETED",
"total": "10.00",
"updated_datetime": "2020-01-01T00:00:04.000000Z"
}
],
"next_page": null
}
GET /public/v1/purchases allows filtering by several statuses
GET /public/v1/purchases?status[]=Completed&status[]=Pending
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiNjgyZDllMTQtNWQxNy00OGFiLThiODAtYjVmZTE0MGU5YThjIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6ODI1IiwidHlwIjoiYWNjZXNzIn0.OOtTmOPGEtZdqW4QDg_5lY2zUM972dtLRUuFzSe8c7E
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: ba564656bc01f8000000000000000001-25cc6db61d198f09-0
{
"data": [
{
"charges": [],
"company": {
"id": "00000000-0000-0000-0000-0000000001ba",
"name": "Company 691",
"updated_datetime": "2026-03-27T14:59:23.904421Z"
},
"custom_data": [],
"due_datetime": "2026-03-27T14:59:23.924870Z",
"id": "00000000-0000-0000-0000-000000000018",
"inserted_datetime": "2026-03-27T14:59:23.925371Z",
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000000f5",
"name": "B872"
},
"compliance_quantity": null,
"id": "25471f3a-365d-44c3-aaa0-6a794e79b81d",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000281",
"id": "00000000-0000-0000-0000-0000000000a1",
"license_id": null,
"name": "Place 158"
},
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "6b220579-5953-4564-9b8d-42a10750e34c",
"name": "Product 861",
"sku": "sku 862",
"updated_datetime": "2026-03-27T14:59:23.930447Z"
},
"quantity": "15.000000000",
"received_quantity": "0.000000000"
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000000f6",
"name": "B873"
},
"compliance_quantity": null,
"id": "45ea6ba6-eade-428e-951f-b26f46ff6f49",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000281",
"id": "00000000-0000-0000-0000-0000000000a1",
"license_id": null,
"name": "Place 158"
},
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "10bee98d-d255-414e-9285-c300a3298195",
"name": "Product 865",
"sku": "sku 866",
"updated_datetime": "2026-03-27T14:59:23.941013Z"
},
"quantity": "10.000000000",
"received_quantity": "0.000000000"
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000000f7",
"name": "B874"
},
"compliance_quantity": null,
"id": "0a046581-fc5e-4e2b-8848-e9be18567798",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000281",
"id": "00000000-0000-0000-0000-0000000000a1",
"license_id": null,
"name": "Place 158"
},
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "68d65fc5-2611-4364-a98e-a095afcfafe2",
"name": "Product 868",
"sku": "sku 869",
"updated_datetime": "2026-03-27T14:59:23.947333Z"
},
"quantity": "5.000000000",
"received_quantity": "0.000000000"
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000000f8",
"name": "B875"
},
"compliance_quantity": null,
"id": "c44fd479-bcb9-4b99-a3dc-329814b19eef",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000281",
"id": "00000000-0000-0000-0000-0000000000a1",
"license_id": null,
"name": "Place 158"
},
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "2017c5bc-6add-40e9-bd2f-c53f7e99412f",
"name": "Product 870",
"sku": "sku 871",
"updated_datetime": "2026-03-27T14:59:23.957392Z"
},
"quantity": "2.000000000",
"received_quantity": "0.000000000"
}
],
"order_datetime": "2020-01-01T12:30:00.000000Z",
"purchase_number": "Purchase #22",
"status": "PENDING",
"total": "32.00",
"updated_datetime": "2026-03-27T14:59:23.925371Z"
},
{
"charges": [],
"company": {
"id": "00000000-0000-0000-0000-0000000001ad",
"name": "Company 672",
"updated_datetime": "2026-03-27T14:59:23.835049Z"
},
"custom_data": [],
"due_datetime": "2026-03-27T14:59:23.859079Z",
"id": "00000000-0000-0000-0000-000000000017",
"inserted_datetime": "2026-03-27T14:59:23.860101Z",
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000000eb",
"name": "B842"
},
"compliance_quantity": null,
"id": "a6c63928-95c2-4aa0-beb4-f8e4a7e2e870",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000281",
"id": "00000000-0000-0000-0000-00000000009d",
"license_id": null,
"name": "Place 154"
},
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "88b6be3f-191e-451d-a4a2-f496afe2390b",
"name": "Product 828",
"sku": "sku 829",
"updated_datetime": "2026-03-27T14:59:23.869198Z"
},
"quantity": "15.000000000",
"received_quantity": "15.000000000"
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000000ec",
"name": "B843"
},
"compliance_quantity": null,
"id": "d8c3214f-c657-441c-962a-78af0db62982",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000281",
"id": "00000000-0000-0000-0000-00000000009d",
"license_id": null,
"name": "Place 154"
},
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "7b8bd797-04d9-4e04-a1a0-2587c3e34706",
"name": "Product 832",
"sku": "sku 833",
"updated_datetime": "2026-03-27T14:59:23.876281Z"
},
"quantity": "10.000000000",
"received_quantity": "10.000000000"
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000000ed",
"name": "B844"
},
"compliance_quantity": null,
"id": "2d351edf-9aec-4099-9716-efb7c55be880",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000281",
"id": "00000000-0000-0000-0000-00000000009d",
"license_id": null,
"name": "Place 154"
},
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "8881332f-138d-4e9f-80fd-ac1e55bf1c12",
"name": "Product 835",
"sku": "sku 836",
"updated_datetime": "2026-03-27T14:59:23.883419Z"
},
"quantity": "5.000000000",
"received_quantity": "5.000000000"
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000000ee",
"name": "B845"
},
"compliance_quantity": null,
"id": "b14a096c-ebea-444a-8729-d8be92aba215",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000281",
"id": "00000000-0000-0000-0000-00000000009d",
"license_id": null,
"name": "Place 154"
},
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "666a4f9d-6728-464b-85b4-a0087f5ec8cb",
"name": "Product 839",
"sku": "sku 840",
"updated_datetime": "2026-03-27T14:59:23.889212Z"
},
"quantity": "2.000000000",
"received_quantity": "2.000000000"
}
],
"order_datetime": "2020-01-01T12:20:00.000000Z",
"purchase_number": "Purchase #21",
"status": "COMPLETED",
"total": "32.00",
"updated_datetime": "2026-03-27T14:59:23.860101Z"
},
{
"charges": [],
"company": {
"id": "00000000-0000-0000-0000-000000000191",
"name": "Company 638",
"updated_datetime": "2026-03-27T14:59:23.676699Z"
},
"custom_data": [],
"due_datetime": "2026-03-27T14:59:23.710644Z",
"id": "00000000-0000-0000-0000-000000000015",
"inserted_datetime": "2026-03-27T14:59:23.711400Z",
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000000d7",
"name": "B776"
},
"compliance_quantity": null,
"id": "d60fa448-a13e-4b7c-9bea-56a34a768aa0",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000281",
"id": "00000000-0000-0000-0000-000000000093",
"license_id": null,
"name": "Place 144"
},
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "71f30e51-e552-410f-be84-b151e857987a",
"name": "Product 762",
"sku": "sku 763",
"updated_datetime": "2026-03-27T14:59:23.719095Z"
},
"quantity": "15.000000000",
"received_quantity": "15.000000000"
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000000d8",
"name": "B777"
},
"compliance_quantity": null,
"id": "10fce408-536b-469f-a638-5905a3efb24a",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000281",
"id": "00000000-0000-0000-0000-000000000093",
"license_id": null,
"name": "Place 144"
},
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "f7a203db-dbac-4925-b2e2-c0685b74cd14",
"name": "Product 769",
"sku": "sku 770",
"updated_datetime": "2026-03-27T14:59:23.725458Z"
},
"quantity": "10.000000000",
"received_quantity": "10.000000000"
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000000d9",
"name": "B778"
},
"compliance_quantity": null,
"id": "83ad4b29-bc74-45a2-8686-dc2de6eb046a",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000281",
"id": "00000000-0000-0000-0000-000000000093",
"license_id": null,
"name": "Place 144"
},
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "fe97f449-2f73-44ca-9dbc-3cf03f7e6f61",
"name": "Product 772",
"sku": "sku 773",
"updated_datetime": "2026-03-27T14:59:23.731545Z"
},
"quantity": "5.000000000",
"received_quantity": "5.000000000"
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000000da",
"name": "B779"
},
"compliance_quantity": null,
"id": "287ea7eb-ff06-48f2-8875-c9b7f87222fc",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000281",
"id": "00000000-0000-0000-0000-000000000093",
"license_id": null,
"name": "Place 144"
},
"package": null,
"price": "10.000000000",
"price_base": "10",
"product": {
"id": "a8970f4b-a44e-4a17-bf87-c670cdf6dffc",
"name": "Product 774",
"sku": "sku 775",
"updated_datetime": "2026-03-27T14:59:23.737143Z"
},
"quantity": "2.000000000",
"received_quantity": "2.000000000"
}
],
"order_datetime": "2020-01-01T12:00:00.000000Z",
"purchase_number": "Purchase #19",
"status": "COMPLETED",
"total": "32.00",
"updated_datetime": "2026-03-27T14:59:23.711400Z"
}
],
"next_page": null
}
Get purchases sorted by Order Date descendingly date and filtered by various attributes.
Note: The page size for this endpoint is 500 purchase orders per page.
Request
GET /public/v1/purchases
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| due_datetime | Filter purchases by the due datetime | query | string | false | ,2022-07-10T00:00:00Z | |
| inserted_datetime | Filter purchases by their creation datetime | query | string | false | 2022-07-10T00:00:00Z, | |
| order_datetime | Filter purchases by the order datetime | query | string | false | 2022-07-10T00:00:00Z,2022-07-11T00:00:00Z | |
| page | Pagination information | query | number | false | ?page[number]=1 | |
| status | Filter purchases by their status. Accepted values are "Completed", "Delivering", "Partially Received", "Pending", "Processing". | query | array | false | ["Pending","Processing"] | |
| updated_datetime | Filter purchases by the datetime they were most recently modified | query | string | false | ,2022-07-10T00:00:00Z |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | A list of purchases | Purchases |
Insert a payment for a purchase
POST /purchases/:id/payments can create a payment for an purchase with both quickbooks id and name
POST /public/v1/purchases/00000000-0000-0000-0000-000000000039/payments
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjcsImlhdCI6MTc3NDYyMzU2NywiaXNzIjoiRGlzdHJ1IiwianRpIjoiMzI3M2NhNTktZmNjMy00OTdhLWFhY2EtNmNlZDEwMDJlNTEzIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY2LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTY1NyIsInR5cCI6ImFjY2VzcyJ9.OK1LzsLSq7A41Cqem2Y7YkU46D5TJxM4zPb4kzt9e1I
{
"amount": 100.01,
"description": "Payment for purchase",
"payment_datetime": "2020-01-01T00:00:00.000000Z",
"payment_method_id": "00000000-0000-0000-0000-00000000000b",
"quickbooks_deposit_account_id": "QBD-123"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 0ffdf1dbcd64f4800000000000000001-48007815fac7aaac-0
{
"data": {
"amount": "100.01",
"description": "Payment for purchase",
"id": "00000000-0000-0000-0000-000000000001",
"inserted_datetime": "2026-03-27T14:59:27.293370Z",
"payment_date": "2020-01-01T00:00:00.000000Z",
"payment_method": {
"deleted_at": null,
"id": "00000000-0000-0000-0000-00000000000b",
"name": "Payment Method 0"
},
"payment_number": "PYT-0000001",
"purchase_id": "00000000-0000-0000-0000-000000000039",
"quickbooks_deposit_account_id": "QBD-123"
}
}
POST /purchases/:id/payments can create a payment for an purchase with both quickbooks id and name
POST /public/v1/purchases/00000000-0000-0000-0000-000000000039/payments
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjcsImlhdCI6MTc3NDYyMzU2NywiaXNzIjoiRGlzdHJ1IiwianRpIjoiMzI3M2NhNTktZmNjMy00OTdhLWFhY2EtNmNlZDEwMDJlNTEzIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY2LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTY1NyIsInR5cCI6ImFjY2VzcyJ9.OK1LzsLSq7A41Cqem2Y7YkU46D5TJxM4zPb4kzt9e1I
{
"amount": 100.01,
"description": "Payment for purchase",
"payment_datetime": "2020-01-01T00:00:00.000000Z",
"payment_method_id": "00000000-0000-0000-0000-00000000000b",
"quickbooks_deposit_account_name": "QBD-NAME"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 0ffdf1dbcd64f4800000000000000001-9d7377e1114ae4eb-0
{
"data": {
"amount": "100.01",
"description": "Payment for purchase",
"id": "00000000-0000-0000-0000-000000000002",
"inserted_datetime": "2026-03-27T14:59:27.349551Z",
"payment_date": "2020-01-01T00:00:00.000000Z",
"payment_method": {
"deleted_at": null,
"id": "00000000-0000-0000-0000-00000000000b",
"name": "Payment Method 0"
},
"payment_number": "PYT-0000002",
"purchase_id": "00000000-0000-0000-0000-000000000039",
"quickbooks_deposit_account_id": "QBD-123"
}
}
Request
POST /public/v1/purchases/{id}/payments
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| payment_method_id | Payment method ID | query | string | true | ||
| amount | Amount of the payment. Will round to 2 decimal places | query | decimal | true | ||
| payment_datetime | Payment date | query | string | true | ||
| description | Description of the payment | query | string | true | ||
| quickbooks_deposit_account_id | Quickbooks deposit account ID. Cannot include both this and quickbooks_deposit_account_name. If user's company is integrated with Quickbooks, either this or quickbooks_deposit_account_name must be provided. Account type must be "Bank" or "Credit Card" | query | string | false | ||
| quickbooks_deposit_account_name | Quickbooks deposit account name. Cannot include both this and quickbooks_deposit_account_id. If user's company is integrated with Quickbooks, either this or quickbooks_deposit_account_id must be provided. Account type must be "Bank" or "Credit Card" | query | string | false |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | A single payment | PurchasePayment |
Upsert a purchase order
POST /public/v1/purchases creates a purchase (with product-tracked item)
POST /public/v1/purchases
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjUsImlhdCI6MTc3NDYyMzU2NSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiOWQ5N2FmZTMtYjgzNi00NmMxLWExMGMtOGExNDI1ZjE2ODk2IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY0LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTI1MSIsInR5cCI6ImFjY2VzcyJ9.xbO99FrJhh7FmWqb7nrT9SmON4GrISCEdbLJ3F-C0ng
{
"billing_location_id": "00000000-0000-0000-0000-0000000000ef",
"charges": [
{
"name": "C1",
"percent": "10.0000",
"type": "CHARGE",
"unit_type": "PERCENT"
},
{
"name": "C2",
"price": "-5.0000",
"type": "DISCOUNT",
"unit_type": "PRICE"
}
],
"company_id": "00000000-0000-0000-0000-00000000025b",
"due_datetime": "2020-01-30T00:00:00.000000Z",
"items": [
{
"location_id": "00000000-0000-0000-0000-0000000000ee",
"price": "10.000000000",
"product_id": "5e42f11b-5abb-4556-88cc-345599a95510",
"quantity": "1.000000000"
}
],
"location_id": "00000000-0000-0000-0000-0000000000ee",
"order_datetime": "2020-01-01T00:00:00.000000Z"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 453d7adfe6842c000000000000000001-db74b8fe481ba6ce-0
{
"data": {
"charges": [
{
"id": "89d37632-8ab0-4963-a4fe-fffad962281b",
"name": "C1",
"percent": "10.0000",
"price": "1.00",
"type": "CHARGE",
"unit_type": "PERCENT"
},
{
"id": "20144426-b1bd-4a5b-bf35-89d464e79d0b",
"name": "C2",
"percent": null,
"price": "-5.00",
"type": "DISCOUNT",
"unit_type": "PRICE"
}
],
"company": {
"id": "00000000-0000-0000-0000-00000000025b",
"name": "Company 892",
"updated_datetime": "2026-03-27T14:59:25.203804Z"
},
"custom_data": [
{
"id": 41,
"name": "Custom Field 18",
"value": null
}
],
"due_datetime": "2020-01-30T00:00:00.000000Z",
"id": "00000000-0000-0000-0000-000000000024",
"inserted_datetime": "2026-03-27T14:59:25.377094Z",
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-0000000001af",
"name": "B1"
},
"compliance_quantity": null,
"id": "d8ea9103-10b2-4510-a183-8769365287f8",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000380",
"id": "00000000-0000-0000-0000-0000000000ee",
"license_id": "00000000-0000-0000-0000-00000000004b",
"name": "Place 235"
},
"package": null,
"price": "10.000000000",
"price_base": "10.000000000",
"product": {
"id": "5e42f11b-5abb-4556-88cc-345599a95510",
"name": "P1",
"sku": "SKU1",
"updated_datetime": "2026-03-27T14:59:25.361813Z"
},
"quantity": "1.000000000",
"received_quantity": "0.000000000"
}
],
"order_datetime": "2020-01-01T00:00:00.000000Z",
"purchase_number": "PO-0000001",
"status": "PENDING",
"total": "6.00",
"updated_datetime": "2026-03-27T14:59:25.383255Z"
}
}
POST /public/v1/purchases creates a purchase (with batch-tracked item)
POST /public/v1/purchases
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjQsImlhdCI6MTc3NDYyMzU2NCwiaXNzIjoiRGlzdHJ1IiwianRpIjoiNzNkZGQ1ZjEtYWIzYy00NDgzLTlmZjQtZmYwNjQzNWI5OTBmIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYzLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTE4MCIsInR5cCI6ImFjY2VzcyJ9.SjZFbTNijsp6erAjtrchNrGIRP5gzdAvJQc-LLBaJOE
{
"billing_location_id": "00000000-0000-0000-0000-0000000000d2",
"charges": [
{
"name": "C1",
"percent": "10.0000",
"type": "CHARGE",
"unit_type": "PERCENT"
},
{
"name": "C2",
"price": "-5.0000",
"type": "DISCOUNT",
"unit_type": "PRICE"
}
],
"company_id": "00000000-0000-0000-0000-00000000022f",
"due_datetime": "2020-01-30T00:00:00.000000Z",
"items": [
{
"batch_id": "00000000-0000-0000-0000-00000000018d",
"location_id": "00000000-0000-0000-0000-0000000000d2",
"price": "10.000000000",
"product_id": "3b48413f-abf6-4f24-a1aa-66ce4107995c",
"quantity": "1.000000000"
}
],
"location_id": "00000000-0000-0000-0000-0000000000d2",
"order_datetime": "2020-01-01T00:00:00.000000Z"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 13d78bfdc29181000000000000000001-c3e90e26d3b7ad46-0
{
"data": {
"charges": [
{
"id": "01e389e6-524e-4df1-b1a8-946a846e9274",
"name": "C1",
"percent": "10.0000",
"price": "1.00",
"type": "CHARGE",
"unit_type": "PERCENT"
},
{
"id": "d98d7856-9669-4d74-93db-34d78b89e5cf",
"name": "C2",
"percent": null,
"price": "-5.00",
"type": "DISCOUNT",
"unit_type": "PRICE"
}
],
"company": {
"id": "00000000-0000-0000-0000-00000000022f",
"name": "Company 839",
"updated_datetime": "2026-03-27T14:59:24.908550Z"
},
"custom_data": [],
"due_datetime": "2020-01-30T00:00:00.000000Z",
"id": "00000000-0000-0000-0000-000000000020",
"inserted_datetime": "2026-03-27T14:59:24.973017Z",
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-00000000018d",
"name": "B1"
},
"compliance_quantity": null,
"id": "118062bc-e9fd-4137-bada-3c322f630859",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-000000000347",
"id": "00000000-0000-0000-0000-0000000000d2",
"license_id": "00000000-0000-0000-0000-00000000003f",
"name": "Place 207"
},
"package": null,
"price": "10.000000000",
"price_base": "10.000000000",
"product": {
"id": "3b48413f-abf6-4f24-a1aa-66ce4107995c",
"name": "P1",
"sku": "SKU1",
"updated_datetime": "2026-03-27T14:59:24.958477Z"
},
"quantity": "1.000000000",
"received_quantity": "0.000000000"
}
],
"order_datetime": "2020-01-01T00:00:00.000000Z",
"purchase_number": "PO-0000001",
"status": "PENDING",
"total": "6.00",
"updated_datetime": "2026-03-27T14:59:24.978581Z"
}
}
POST /public/v1/purchases creates a purchase (with package-tracked item)
POST /public/v1/purchases
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiY2FiM2Y4NzItYzNiNi00YWEyLWE3M2MtZmM1NmQ1Yzc0ZGMzIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NDExIiwidHlwIjoiYWNjZXNzIn0.8qvHL_nyu7eoOqQz_KhP7qZYgqjWc19iuFpKuBE-56E
{
"billing_location_id": "00000000-0000-0000-0000-00000000003a",
"charges": [
{
"name": "C1",
"percent": "10.0000",
"type": "CHARGE",
"unit_type": "PERCENT"
},
{
"name": "C2",
"price": "-5.0000",
"type": "DISCOUNT",
"unit_type": "PRICE"
}
],
"company_id": "00000000-0000-0000-0000-0000000000b9",
"due_datetime": "2020-01-30T00:00:00.000000Z",
"items": [
{
"location_id": "00000000-0000-0000-0000-00000000003a",
"price": "10.000000000",
"product_id": "a2417f92-6cac-4cf9-87e8-b23df95a9db5",
"quantity": "1.000000000"
}
],
"location_id": "00000000-0000-0000-0000-00000000003a",
"order_datetime": "2020-01-01T00:00:00.000000Z"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 84f1d94d141800000000000000000001-8fa4100bb0e3aa4d-0
{
"data": {
"charges": [
{
"id": "911492e1-e517-4b2c-9313-0ad11d3b77ca",
"name": "C1",
"percent": "10.0000",
"price": "1.00",
"type": "CHARGE",
"unit_type": "PERCENT"
},
{
"id": "55a93f27-6bdf-42bc-a096-6d18e3994e8e",
"name": "C2",
"percent": null,
"price": "-5.00",
"type": "DISCOUNT",
"unit_type": "PRICE"
}
],
"company": {
"id": "00000000-0000-0000-0000-0000000000b9",
"name": "Company 306",
"updated_datetime": "2026-03-27T14:59:22.383857Z"
},
"custom_data": [],
"due_datetime": "2020-01-30T00:00:00.000000Z",
"id": "00000000-0000-0000-0000-000000000006",
"inserted_datetime": "2026-03-27T14:59:22.603860Z",
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-000000000064",
"name": "B1"
},
"compliance_quantity": null,
"id": "77f29ca4-56ea-45c8-8542-c5701ce87c45",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-00000000012c",
"id": "00000000-0000-0000-0000-00000000003a",
"license_id": "00000000-0000-0000-0000-000000000009",
"name": "Place 55"
},
"package": null,
"price": "10.000000000",
"price_base": "10.000000000",
"product": {
"id": "a2417f92-6cac-4cf9-87e8-b23df95a9db5",
"name": "P1",
"sku": "SKU1",
"updated_datetime": "2026-03-27T14:59:22.567404Z"
},
"quantity": "1.000000000",
"received_quantity": "0.000000000"
}
],
"order_datetime": "2020-01-01T00:00:00.000000Z",
"purchase_number": "PO-0000001",
"status": "PENDING",
"total": "6.00",
"updated_datetime": "2026-03-27T14:59:22.633910Z"
}
}
POST /public/v1/purchases updates a purchase
POST /public/v1/purchases
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjYsImlhdCI6MTc3NDYyMzU2NiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMzFiY2U1NDQtY2Y5Ny00NDEzLTg1NTgtOWQxMGMxOGJmZWU1IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY1LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTQ2MyIsInR5cCI6ImFjY2VzcyJ9.XqVdAFJfqT3PpYRmEHQ7R80nEXL-ByTTRHkqCgrs9aE
{
"billing_location_id": "00000000-0000-0000-0000-000000000123",
"charges": [
{
"name": "C1",
"percent": "10.0000",
"type": "CHARGE",
"unit_type": "PERCENT"
}
],
"company_id": "00000000-0000-0000-0000-0000000002e4",
"due_datetime": "2020-01-20T00:00:00.000000Z",
"items": [
{
"location_id": "00000000-0000-0000-0000-000000000123",
"price": "10.000000000",
"product_id": "c94556c3-e7e8-4381-96d0-6562b2826ed8",
"quantity": "1.000000000"
}
],
"location_id": "00000000-0000-0000-0000-000000000123",
"order_datetime": "2020-01-02T00:00:00.000000Z"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 5314823d140eec000000000000000001-47704ecb4ed005c4-0
{
"data": {
"charges": [
{
"id": "3816979a-0b3e-4672-92a6-a259e457aabe",
"name": "C1",
"percent": "10.0000",
"price": "1.00",
"type": "CHARGE",
"unit_type": "PERCENT"
}
],
"company": {
"id": "00000000-0000-0000-0000-0000000002e4",
"name": "Company 1053",
"updated_datetime": "2026-03-27T14:59:26.206878Z"
},
"custom_data": [],
"due_datetime": "2020-01-20T00:00:00.000000Z",
"id": "00000000-0000-0000-0000-00000000002e",
"inserted_datetime": "2026-03-27T14:59:26.284791Z",
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-000000000221",
"name": "B1"
},
"compliance_quantity": null,
"id": "419a297b-7268-4a88-b121-c5e04bbd5ddc",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-00000000041f",
"id": "00000000-0000-0000-0000-000000000123",
"license_id": "00000000-0000-0000-0000-00000000005d",
"name": "Place 288"
},
"package": null,
"price": "10.000000000",
"price_base": "10.000000000",
"product": {
"id": "c94556c3-e7e8-4381-96d0-6562b2826ed8",
"name": "P1",
"sku": "SKU1",
"updated_datetime": "2026-03-27T14:59:26.256604Z"
},
"quantity": "1.000000000",
"received_quantity": "0.000000000"
}
],
"order_datetime": "2020-01-02T00:00:00.000000Z",
"purchase_number": "PO-0000001",
"status": "PENDING",
"total": "11.00",
"updated_datetime": "2026-03-27T14:59:26.292029Z"
}
}
POST /public/v1/purchases updates a purchase
POST /public/v1/purchases
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjYsImlhdCI6MTc3NDYyMzU2NiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMzFiY2U1NDQtY2Y5Ny00NDEzLTg1NTgtOWQxMGMxOGJmZWU1IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY1LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTQ2MyIsInR5cCI6ImFjY2VzcyJ9.XqVdAFJfqT3PpYRmEHQ7R80nEXL-ByTTRHkqCgrs9aE
{
"billing_location_id": "00000000-0000-0000-0000-000000000123",
"charges": [
{
"id": "3816979a-0b3e-4672-92a6-a259e457aabe",
"name": "C1",
"percent": "10.0000",
"type": "CHARGE",
"unit_type": "PERCENT"
},
{
"name": "C2",
"percent": null,
"price": "-5.00",
"type": "DISCOUNT",
"unit_type": "PRICE"
}
],
"company_id": "00000000-0000-0000-0000-0000000002e4",
"due_datetime": "2020-01-30T00:00:00.000000Z",
"id": "00000000-0000-0000-0000-00000000002e",
"items": [
{
"id": "419a297b-7268-4a88-b121-c5e04bbd5ddc",
"location_id": "00000000-0000-0000-0000-000000000123",
"price": "10.000000000",
"product_id": "c94556c3-e7e8-4381-96d0-6562b2826ed8",
"quantity": "1.000000000"
},
{
"batch_id": "00000000-0000-0000-0000-000000000224",
"location_id": "00000000-0000-0000-0000-000000000123",
"price": "5.000000000",
"product_id": "0a95f489-67a6-49d2-845b-f64f10061ce9",
"quantity": "2.000000000"
}
],
"location_id": "00000000-0000-0000-0000-000000000123",
"order_datetime": "2020-01-01T00:00:00.000000Z"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 5314823d140eec000000000000000001-7ab9dcb5e4ec3015-0
{
"data": {
"charges": [
{
"id": "3816979a-0b3e-4672-92a6-a259e457aabe",
"name": "C1",
"percent": "10.0000",
"price": "2.00",
"type": "CHARGE",
"unit_type": "PERCENT"
},
{
"id": "2905f85b-55fa-45c5-87d7-5e357e3efd4d",
"name": "C2",
"percent": null,
"price": "-5.00",
"type": "DISCOUNT",
"unit_type": "PRICE"
}
],
"company": {
"id": "00000000-0000-0000-0000-0000000002e4",
"name": "Company 1053",
"updated_datetime": "2026-03-27T14:59:26.206878Z"
},
"custom_data": [],
"due_datetime": "2020-01-30T00:00:00.000000Z",
"id": "00000000-0000-0000-0000-00000000002e",
"inserted_datetime": "2026-03-27T14:59:26.284791Z",
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-000000000221",
"name": "B1"
},
"compliance_quantity": null,
"id": "419a297b-7268-4a88-b121-c5e04bbd5ddc",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-00000000041f",
"id": "00000000-0000-0000-0000-000000000123",
"license_id": "00000000-0000-0000-0000-00000000005d",
"name": "Place 288"
},
"package": null,
"price": "10.000000000",
"price_base": "10.000000000",
"product": {
"id": "c94556c3-e7e8-4381-96d0-6562b2826ed8",
"name": "P1",
"sku": "SKU1",
"updated_datetime": "2026-03-27T14:59:26.256604Z"
},
"quantity": "1.000000000",
"received_quantity": "0.000000000"
},
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-000000000224",
"name": "B2"
},
"compliance_quantity": null,
"id": "56f84d5f-173a-458b-97df-cc543a3c37b8",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-00000000041f",
"id": "00000000-0000-0000-0000-000000000123",
"license_id": "00000000-0000-0000-0000-00000000005d",
"name": "Place 288"
},
"package": null,
"price": "5.000000000",
"price_base": "5.000000000",
"product": {
"id": "0a95f489-67a6-49d2-845b-f64f10061ce9",
"name": "P2",
"sku": "SKU2",
"updated_datetime": "2026-03-27T14:59:26.273948Z"
},
"quantity": "2.000000000",
"received_quantity": "0.000000000"
}
],
"order_datetime": "2020-01-01T00:00:00.000000Z",
"purchase_number": "PO-0000001",
"status": "PENDING",
"total": "17.00",
"updated_datetime": "2026-03-27T14:59:26.349850Z"
}
}
POST /public/v1/purchases updating a purchase removes line items that aren't included in the payload
POST /public/v1/purchases
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjQsImlhdCI6MTc3NDYyMzU2NCwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMjI1MjM5YzYtZDQwYi00MDgzLWE3ZjUtYTViMWQwZTE5YTFlIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYzLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6OTgyIiwidHlwIjoiYWNjZXNzIn0.eJ9aUdgmuENdtmgSRoFVdupjT85El2EYYE_L2Ri4mfw
{
"billing_location_id": "00000000-0000-0000-0000-0000000000b7",
"company_id": "00000000-0000-0000-0000-0000000001e9",
"due_datetime": "2020-01-20T00:00:00.000000Z",
"items": [
{
"location_id": "00000000-0000-0000-0000-0000000000b7",
"price": "10",
"product_id": "7ae412c3-a84b-4f78-b1e7-354063332935",
"quantity": "1"
}
],
"location_id": "00000000-0000-0000-0000-0000000000b7",
"order_datetime": "2020-01-02T00:00:00.000000Z"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 7eb98c08a614bc000000000000000001-f000166bd9121107-0
{
"data": {
"charges": [],
"company": {
"id": "00000000-0000-0000-0000-0000000001e9",
"name": "Company 757",
"updated_datetime": "2026-03-27T14:59:24.211395Z"
},
"custom_data": [],
"due_datetime": "2020-01-20T00:00:00.000000Z",
"id": "00000000-0000-0000-0000-000000000019",
"inserted_datetime": "2026-03-27T14:59:24.259778Z",
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-00000000011a",
"name": "B979"
},
"compliance_quantity": null,
"id": "d227cea4-d5c8-4e24-89c9-93c3978c249b",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-0000000002f7",
"id": "00000000-0000-0000-0000-0000000000b7",
"license_id": "00000000-0000-0000-0000-000000000039",
"name": "Place 180"
},
"package": null,
"price": "10.000000000",
"price_base": "10.000000000",
"product": {
"id": "7ae412c3-a84b-4f78-b1e7-354063332935",
"name": "Product 975",
"sku": "sku 976",
"updated_datetime": "2026-03-27T14:59:24.231981Z"
},
"quantity": "1.000000000",
"received_quantity": "0.000000000"
}
],
"order_datetime": "2020-01-02T00:00:00.000000Z",
"purchase_number": "PO-0000001",
"status": "PENDING",
"total": "10.00",
"updated_datetime": "2026-03-27T14:59:24.259778Z"
}
}
POST /public/v1/purchases updating a purchase removes line items that aren't included in the payload
POST /public/v1/purchases
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjQsImlhdCI6MTc3NDYyMzU2NCwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMjI1MjM5YzYtZDQwYi00MDgzLWE3ZjUtYTViMWQwZTE5YTFlIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYzLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6OTgyIiwidHlwIjoiYWNjZXNzIn0.eJ9aUdgmuENdtmgSRoFVdupjT85El2EYYE_L2Ri4mfw
{
"company_id": "00000000-0000-0000-0000-0000000001e9",
"id": "00000000-0000-0000-0000-000000000019",
"items": [
{
"location_id": "00000000-0000-0000-0000-0000000000b7",
"price": "2",
"product_id": "7ae412c3-a84b-4f78-b1e7-354063332935",
"quantity": "1"
}
]
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 7eb98c08a614bc000000000000000001-9f2f51a05bd89654-0
{
"data": {
"charges": [],
"company": {
"id": "00000000-0000-0000-0000-0000000001e9",
"name": "Company 757",
"updated_datetime": "2026-03-27T14:59:24.211395Z"
},
"custom_data": [],
"due_datetime": "2020-01-20T00:00:00.000000Z",
"id": "00000000-0000-0000-0000-000000000019",
"inserted_datetime": "2026-03-27T14:59:24.259778Z",
"items": [
{
"batch": {
"batch_number": null,
"id": "00000000-0000-0000-0000-00000000011a",
"name": "B979"
},
"compliance_quantity": null,
"id": "0fe8db2b-138a-4274-b59a-b7146abff9d8",
"is_sample": false,
"location": {
"address": "123 Fake Street, Beverly Hills, CA 88888, USA",
"company_id": "00000000-0000-0000-0000-0000000002f7",
"id": "00000000-0000-0000-0000-0000000000b7",
"license_id": "00000000-0000-0000-0000-000000000039",
"name": "Place 180"
},
"package": null,
"price": "2.000000000",
"price_base": "2.000000000",
"product": {
"id": "7ae412c3-a84b-4f78-b1e7-354063332935",
"name": "Product 975",
"sku": "sku 976",
"updated_datetime": "2026-03-27T14:59:24.231981Z"
},
"quantity": "1.000000000",
"received_quantity": "0.000000000"
}
],
"order_datetime": "2020-01-02T00:00:00.000000Z",
"purchase_number": "PO-0000001",
"status": "PENDING",
"total": "2.00",
"updated_datetime": "2026-03-27T14:59:24.339721Z"
}
}
POST /public/v1/purchases does not update a purchase that has moved beyond Pending status
POST /public/v1/purchases
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiYjBkOGI5OGEtZTRjZi00MGM0LWFmMTMtZDRkNjYxNjUzMDgyIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NTY3IiwidHlwIjoiYWNjZXNzIn0.vH9qlABD5cBWVQATE6G3RMn52_1bnWt7nk4U9ySAcMM
{
"billing_location_id": "00000000-0000-0000-0000-00000000004c",
"charges": [],
"company_id": "00000000-0000-0000-0000-00000000010b",
"due_datetime": "2020-01-30T00:00:00.000000Z",
"id": "00000000-0000-0000-0000-000000000008",
"items": [
{
"batch_id": "00000000-0000-0000-0000-000000000075",
"id": "dd73f503-5fdb-4ce9-af2b-4936a0c574b9",
"location_id": "00000000-0000-0000-0000-00000000004c",
"price": "10.000000000",
"product_id": "e6780d2c-de71-4bb0-b435-d1fbe198b0d4",
"quantity": "1.000000000"
}
],
"location_id": "00000000-0000-0000-0000-00000000004c",
"order_datetime": "2020-01-01T00:00:00.000000Z"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: a89d6a3c66f5e0000000000000000001-f2da6f4f96c7b182-0
{
"errors": [
{
"context": {},
"message": "Cannot change this PO through the Distru API because it's beyond Pending status",
"pointer": [
"status"
],
"section": "body"
}
]
}
POST /public/v1/purchases does not create a purchase with a company relationship that belongs to another company
POST /public/v1/purchases
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiOWQ3NDIwN2UtMzA2MS00ZTk4LTllYjQtNGY0NDg5Y2E4Y2VjIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MjgxIiwidHlwIjoiYWNjZXNzIn0.M7WPXhgJRSLMU3M9vK08nKCoT6Q1ogjQceJ5kMr5ir0
{
"billing_location_id": "00000000-0000-0000-0000-000000000035",
"charges": [],
"company_id": "00000000-0000-0000-0000-000000000076",
"due_datetime": "2020-01-30T00:00:00.000000Z",
"items": [
{
"location_id": "00000000-0000-0000-0000-000000000035",
"price": "10.000000000",
"product_id": "4c5bcca6-b1d5-4949-8c71-651429a01a14",
"quantity": "1.000000000"
}
],
"location_id": "00000000-0000-0000-0000-000000000035",
"order_datetime": "2020-01-01T00:00:00.000000Z"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: fedbcd437e5090000000000000000001-e92f86991e1b8575-0
{
"errors": [
{
"context": {},
"message": "The provided supplier does not exist",
"pointer": [
"company_id"
],
"section": "body"
}
]
}
POST /public/v1/purchases does not create a purchase with a product that belongs to another company
POST /public/v1/purchases
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjQsImlhdCI6MTc3NDYyMzU2NCwiaXNzIjoiRGlzdHJ1IiwianRpIjoiOTBkOWU5ZTItOWIwZi00NzJmLTg4ZmMtMWIxOWVlNjAxMWZjIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYzLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6OTY0IiwidHlwIjoiYWNjZXNzIn0.svOt4CUjUUX9N7yDrYPgtNynzukbGjyqD10LaBoFibg
{
"billing_location_id": "00000000-0000-0000-0000-0000000000b1",
"charges": [],
"company_id": "00000000-0000-0000-0000-0000000001d9",
"due_datetime": "2020-01-30T00:00:00.000000Z",
"items": [
{
"location_id": "00000000-0000-0000-0000-0000000000b1",
"price": "10.000000000",
"product_id": "21da5e2f-3a29-4bec-b60c-253fb1f64597",
"quantity": "1.000000000"
}
],
"location_id": "00000000-0000-0000-0000-0000000000b1",
"order_datetime": "2020-01-01T00:00:00.000000Z"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: 5ebbf412cdebb4000000000000000001-ee2fd259752301be-0
{
"errors": [
{
"context": {
"id": "58b2ea2a-21cb-4591-8110-578e0e5387a1"
},
"message": "This record does not belong to your company.",
"pointer": [
"items",
0,
"product_id"
],
"section": "body"
}
]
}
POST /public/v1/purchases does not create a purchase with a batch that belongs to another company
POST /public/v1/purchases
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjYsImlhdCI6MTc3NDYyMzU2NiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiOWE4NWU1NTYtOTFjOS00ZjRjLWE2Y2QtNDU5N2Q5NTE3M2RlIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY1LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTU2NiIsInR5cCI6ImFjY2VzcyJ9.WZmA-IwmI8N_op9NtzVpNHoMOIJr86ubGta2YKgc0kw
{
"billing_location_id": "00000000-0000-0000-0000-000000000142",
"charges": [],
"company_id": "00000000-0000-0000-0000-000000000331",
"due_datetime": "2020-01-30T00:00:00.000000Z",
"items": [
{
"batch_id": "00000000-0000-0000-0000-000000000260",
"location_id": "00000000-0000-0000-0000-000000000142",
"price": "10.000000000",
"quantity": "1.000000000"
}
],
"location_id": "00000000-0000-0000-0000-000000000142",
"order_datetime": "2020-01-01T00:00:00.000000Z"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: c4dc82f51034a8000000000000000001-f9917d9e40337c38-0
{
"errors": [
{
"context": {
"id": "c07becee-681e-446e-87ba-a9b2d385af07"
},
"message": "This record does not belong to your company.",
"pointer": [
"items",
0,
"product_id"
],
"section": "body"
}
]
}
POST /public/v1/purchases does not create a purchase with a location that belongs to another company
POST /public/v1/purchases
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjQsImlhdCI6MTc3NDYyMzU2NCwiaXNzIjoiRGlzdHJ1IiwianRpIjoiNWJlNzg0MWQtZDUyNy00ZTk1LWJjNDktNGNiNGIyOTNmZTI0IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYzLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6OTM1IiwidHlwIjoiYWNjZXNzIn0.64LlSVaXbmUPE-lBR2uRsjmQ6hivSj2JSNxTYEu4Sms
{
"billing_location_id": "00000000-0000-0000-0000-0000000000a9",
"charges": [],
"company_id": "00000000-0000-0000-0000-0000000001ca",
"due_datetime": "2020-01-30T00:00:00.000000Z",
"items": [
{
"location_id": "00000000-0000-0000-0000-0000000000ab",
"price": "10.000000000",
"product_id": "0273ade6-7b69-44fe-8446-062844e1060f",
"quantity": "1.000000000"
}
],
"location_id": "00000000-0000-0000-0000-0000000000ab",
"order_datetime": "2020-01-01T00:00:00.000000Z"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: bd9bf693d38a00000000000000000001-4ddc591a5744bdbc-0
{
"errors": [
{
"context": {
"id": "b8052efd-5270-4206-b0bc-48995ee3cb5c"
},
"message": "This record does not belong to your company.",
"pointer": [
"items",
0,
"location_id"
],
"section": "body"
}
]
}
POST /public/v1/purchases does not create a purchase with a location different from the order items
POST /public/v1/purchases
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjUsImlhdCI6MTc3NDYyMzU2NSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMTU1YTE1MmMtYWY4Mi00OGJmLWFmNzEtOGVlMGFkNjA0NTU0IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY0LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTMwOCIsInR5cCI6ImFjY2VzcyJ9.uPT96W8Qj9shXaOstxQ0P1XxQodIjUL4b160AIBSYR8
{
"billing_location_id": "00000000-0000-0000-0000-0000000000f7",
"charges": [],
"company_id": "00000000-0000-0000-0000-00000000026b",
"due_datetime": "2020-01-30T00:00:00.000000Z",
"items": [
{
"location_id": "00000000-0000-0000-0000-0000000000f7",
"price": "10.000000000",
"product_id": "9672db9e-a39e-4d7d-8cf8-1609affe2f79",
"quantity": "1.000000000"
}
],
"location_id": "00000000-0000-0000-0000-0000000000f8",
"order_datetime": "2020-01-01T00:00:00.000000Z"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: cc051ac4501af0000000000000000001-7059fead355ad408-0
{
"errors": [
{
"context": {
"id": "28b70e83-365a-4bcc-9a0b-3507f54a0125"
},
"message": "Purchase item delivery location must be the same as purchase delivery location.",
"pointer": [
"items",
0,
"location_id"
],
"section": "body"
}
]
}
POST /public/v1/purchases does not create a purchase with a billing location that belongs to another company
POST /public/v1/purchases
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjYsImlhdCI6MTc3NDYyMzU2NiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMzBjNzA5MTctOTFjNS00NjQzLWIxZTItMTZiNTZiNDI3NGViIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTY1LCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MTQ0OSIsInR5cCI6ImFjY2VzcyJ9.t60YhJrzzE-f_fYVNqlRiITCKfd4V0MIMO9cSgeYFNM
{
"billing_location_id": "00000000-0000-0000-0000-00000000011e",
"charges": [],
"company_id": "00000000-0000-0000-0000-0000000002d7",
"due_datetime": "2020-01-30T00:00:00.000000Z",
"items": [
{
"location_id": "00000000-0000-0000-0000-00000000011c",
"price": "10.000000000",
"product_id": "f0a83a09-5595-45f5-936e-df86fee6f221",
"quantity": "1.000000000"
}
],
"location_id": "00000000-0000-0000-0000-00000000011c",
"order_datetime": "2020-01-01T00:00:00.000000Z"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: 7686df84da4438000000000000000001-19a0ca657dd9952d-0
{
"errors": [
{
"context": {},
"message": "The provided billing address does not exist",
"pointer": [
"billing_location_id"
],
"section": "body"
}
]
}
Upsert a single purchase order. To update an existing purchase order, pass in an existing purchase order ID in the id field. When updating a purchase order, you must pass in all fields (no sparse update currently supported). Any existing order item or charge you do not pass in to items and charges respectively will be deleted
Request
POST /public/v1/purchases
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| id | Unique ID for this purchase order. If it exists, an update will be performed; otherwise, it will be used as the ID of a new purchase order record | query | string | false | ||
| description | A description of the purchase order | query | string | false | ||
| location_id | The location into which the inventory in this purchase will be received | query | string | true | ||
| billing_location_id | The billing address for this purchase order | query | string | true | ||
| company_id | The company that is the supplier for this purchase order | query | string | true | ||
| order_datetime | The datetime on which the purchase order was placed | query | string | true | ||
| due_datetime | The datetime by which the purchase order should be paid | query | string | true | ||
| charges | The additional lines of Charge, Discount, or Tax added to this purchase order | body | PurchaseChargesRequest | false | ||
| items | The items present on this purchase order | body | PurchaseItemsRequest | true |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | A single purchase orders | Purchase |
StockAdjustment
Get adjustments
GET /public/v1/adjustments returns proper data for stock adjustments of product/batch/package tracked
GET /public/v1/adjustments
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiMzk0Njk5MzEtNGFmMC00YTQwLWJiMTMtNzMwZmFmMmIzMWIzIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6Nzg1IiwidHlwIjoiYWNjZXNzIn0.9G8IrysmQPbLv0prRqIeQlPXw0hfpMgwLGE-SmM8PyE
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 3d6957ba3365d4000000000000000001-851c707237ea8e9d-0
{
"data": [
{
"batch_id": null,
"completion_datetime": "2026-03-27T14:59:23.550833Z",
"compliance_quantity": null,
"compliance_unit_type": null,
"description": null,
"id": "00000000-0000-0000-0000-000000000033",
"inserted_at": "2026-03-27T14:59:23.551181Z",
"license_id": null,
"location_id": null,
"owner_id": "00000000-0000-0000-0000-000000000311",
"package_id": null,
"product_id": "48a71e57-2a35-40ee-9c76-4a4541db7f75",
"quantity": "10",
"reason": "revaluation",
"total_cost": "10000",
"unit_type": {
"id": "00000000-0000-0000-0000-000000001ef5",
"name": "Gram"
}
},
{
"batch_id": null,
"completion_datetime": "2026-03-27T14:59:23.652985Z",
"compliance_quantity": "1",
"compliance_unit_type": {
"id": "00000000-0000-0000-0000-000000001ef7",
"name": "Ounce"
},
"description": "A default note describing this transaction",
"id": "00000000-0000-0000-0000-000000000039",
"inserted_at": "2026-03-27T14:59:23.655456Z",
"license_id": "00000000-0000-0000-0000-000000000021",
"location_id": "00000000-0000-0000-0000-000000000083",
"owner_id": null,
"package_id": "00000000-0000-0000-0000-00000000001b",
"product_id": "06d30000-8b96-434b-ac21-0f8aa39feadb",
"quantity": "1",
"reason": "Voluntary Surrender",
"total_cost": "900",
"unit_type": {
"id": "00000000-0000-0000-0000-000000001ef7",
"name": "Ounce"
}
},
{
"batch_id": "00000000-0000-0000-0000-0000000000d4",
"completion_datetime": "2026-03-27T14:59:23.711596Z",
"compliance_quantity": null,
"compliance_unit_type": null,
"description": null,
"id": "00000000-0000-0000-0000-00000000003e",
"inserted_at": "2026-03-27T14:59:23.711943Z",
"license_id": null,
"location_id": "00000000-0000-0000-0000-00000000007e",
"owner_id": null,
"package_id": null,
"product_id": "8c3985b2-014a-4578-9666-1648fcebbffe",
"quantity": "1",
"reason": "revaluation",
"total_cost": "-800",
"unit_type": {
"id": "00000000-0000-0000-0000-000000001ef5",
"name": "Gram"
}
}
],
"next_page": null
}
Get stock adjustments sorted by their creation date and filtered by various attributes
Note: The page size for this endpoint is 5000 stock adjustments per page. This endpoint returns eventually consistent data, with changes taking up to 1 second to propagate in responses.
Request
GET /public/v1/adjustments
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| inserted_datetime | Filter stock adjustments by their creation datetime | query | string | false | 2022-07-10T00:00:00Z, | |
| completion_datetime | Filter stock adjustments by their completion datetime (adjustment date) | query | string | false | 2022-07-10T00:00:00Z, | |
| page | Pagination information | query | number | false | ?page[number]=1 |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | A list of stock adjustments | StockAdjustments |
Insert a stock adjustment
POST /public/v1/adjustments creates an adjustment for a product tracked product
POST /public/v1/adjustments
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiNDMwNzM3NjUtZTEyNy00MGRmLWFhZGEtNGQwMzc5NmI2Mjc5IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NjYwIiwidHlwIjoiYWNjZXNzIn0.b2sV--iYS2a0QuPiUwx9IKdDPkkOC-gEPUt887M_H-U
{
"completion_datetime": "2020-01-03T12:20:00.000000Z",
"description": "test",
"location_id": "00000000-0000-0000-0000-000000000060",
"product_id": "cf50ce90-cf4e-421c-a2dd-a6fdb7573d16",
"quantity": 10,
"reason": "expired"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: bb5f711812a628000000000000000001-5b0189166c0eb6ec-0
{
"data": {
"batch_id": null,
"completion_datetime": "2020-01-03T12:20:00.000000Z",
"compliance_quantity": null,
"compliance_unit_type": null,
"description": "test",
"id": "00000000-0000-0000-0000-00000000002d",
"inserted_at": "2026-03-27T14:59:23.181019Z",
"license_id": null,
"location_id": "00000000-0000-0000-0000-000000000060",
"owner_id": null,
"package_id": null,
"product_id": "cf50ce90-cf4e-421c-a2dd-a6fdb7573d16",
"quantity": "10",
"reason": "expired",
"total_cost": null,
"unit_type": {
"id": "00000000-0000-0000-0000-000000001984",
"name": "Gram"
}
}
}
POST /public/v1/adjustments creates an adjustment for a batch tracked product
POST /public/v1/adjustments
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiNGQzNjBjZjEtNTQyZC00MDQ2LWEyMjMtOGNmZjYyYTgwNjNhIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NzA4IiwidHlwIjoiYWNjZXNzIn0.ORNuB7OLTEb-nps2Zb_7-6P7e8zuj-nKoquDtVoJTZs
{
"batch_id": "00000000-0000-0000-0000-0000000000aa",
"completion_datetime": "2020-01-03T12:20:00.000000Z",
"description": "test",
"location_id": "00000000-0000-0000-0000-000000000069",
"quantity": 10,
"reason": "expired",
"unit_cost": 1000
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 690900250bd50c000000000000000001-a9c34d6c901a074d-0
{
"data": {
"batch_id": "00000000-0000-0000-0000-0000000000aa",
"completion_datetime": "2020-01-03T12:20:00.000000Z",
"compliance_quantity": null,
"compliance_unit_type": null,
"description": "test",
"id": "00000000-0000-0000-0000-00000000002f",
"inserted_at": "2026-03-27T14:59:23.309242Z",
"license_id": null,
"location_id": "00000000-0000-0000-0000-000000000069",
"owner_id": null,
"package_id": null,
"product_id": "0c443be7-74ec-4335-8691-d9e16f61b776",
"quantity": "10",
"reason": "expired",
"total_cost": "10000",
"unit_type": {
"id": "00000000-0000-0000-0000-000000001bb8",
"name": "Gram"
}
}
}
POST /public/v1/adjustments creates an adjustment for a package tracked product
POST /public/v1/adjustments
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiYWFiMmY2ZDItMzJmMy00MDYzLTg2OTgtMzAwYWY5NjI2MWU2IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NDQxIiwidHlwIjoiYWNjZXNzIn0.oodG--yn_Z29VLXGfm2q7Ny67jVmHC3DltTgqrbTHZc
{
"completion_datetime": "2020-01-03T12:20:00.000000Z",
"compliance_quantity": 10,
"description": "test",
"package_id": "00000000-0000-0000-0000-000000000009",
"reason": "Damage (BCC)",
"unit_cost": 1000
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: a61d2fbc017de8000000000000000001-2e4d5537b981997a-0
{
"data": {
"batch_id": null,
"completion_datetime": "2020-01-03T12:20:00.000000Z",
"compliance_quantity": "10",
"compliance_unit_type": {
"id": "00000000-0000-0000-0000-000000000fdd",
"name": "Ounce"
},
"description": "test",
"id": "00000000-0000-0000-0000-000000000024",
"inserted_at": "2026-03-27T14:59:22.730934Z",
"license_id": "00000000-0000-0000-0000-00000000000a",
"location_id": "00000000-0000-0000-0000-00000000003e",
"owner_id": null,
"package_id": "00000000-0000-0000-0000-000000000009",
"product_id": "5a0308e1-4385-4405-b76f-001c56fe4579",
"quantity": "0.35274",
"reason": "Damage (BCC)",
"total_cost": "10000.000000005834",
"unit_type": {
"id": "00000000-0000-0000-0000-000000000fdb",
"name": "Gram"
}
}
}
POST /public/v1/adjustments pointer translation works as intended
POST /public/v1/adjustments
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjQsImlhdCI6MTc3NDYyMzU2NCwiaXNzIjoiRGlzdHJ1IiwianRpIjoiYTQ5ZWNiZDEtNDM5My00ZjBhLTgxOWQtYjAwYzBiZWUxODdjIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYzLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6OTQ5IiwidHlwIjoiYWNjZXNzIn0.M2Ity6zAdfwRfoh_Vr3nutMZlq85VaqIBjt9vlLwRFE
{
"description": "test",
"package_id": "00000000-0000-0000-0000-000000000028",
"quantity": 10,
"reason": "Damage (BCC)"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: 5f7fa202d547e4000000000000000001-df53e05f36eb67c4-0
{
"errors": [
{
"context": {},
"message": "can't be blank",
"pointer": [
"completion_datetime"
],
"section": "body"
},
{
"context": {},
"message": "Required for adjustments of package tracked products",
"pointer": [
"compliance_quantity"
],
"section": "body"
},
{
"context": {},
"message": "Cannot be set for adjustments of package tracked products",
"pointer": [
"quantity"
],
"section": "body"
}
]
}
POST /public/v1/adjustments pointer translation works for cost accounting as well
POST /public/v1/adjustments
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiNDRhODQzZmItMDVhOS00OTY4LWFjYzAtZDNmNmNiNzQ2MzhlIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6ODk1IiwidHlwIjoiYWNjZXNzIn0.IXQW4BfXQ3JcjRo9dR1j3Jy5ViF8RaEFGhgh09u2E60
{
"completion_datetime": "2020-01-03T12:20:00.000000Z",
"description": "test",
"location_id": "00000000-0000-0000-0000-0000000000a0",
"product_id": "a4db77ad-112f-4895-ac5a-8cbef891ddc8",
"quantity": 10,
"reason": "expired"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: aa65942b2b4fb8000000000000000001-0626e359ce31f9f2-0
{
"errors": [
{
"context": {},
"message": "Your company cost settings require a cost to be set when adding quantity",
"pointer": [
"unit_cost"
],
"section": "body"
}
]
}
POST /public/v1/adjustments validates quantity for non-compliance adjustments
POST /public/v1/adjustments
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiNmFiYjNlM2YtZTE2OS00ODFiLWJhOGMtOGZhNjc5YzMyYmJlIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6OTA2IiwidHlwIjoiYWNjZXNzIn0.IhlWfrsrngcN7dw5gDn_5HeTYpxXvuRe_BEhZaIOMD8
{
"completion_datetime": "2020-01-03T12:20:00.000000Z",
"compliance_quantity": 10,
"description": "test",
"location_id": "00000000-0000-0000-0000-0000000000a3",
"product_id": "5478b919-caf1-4f20-9029-bfe15827a484",
"reason": "expired"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: 6c39d12f879f3c000000000000000001-933ef01f9f653457-0
{
"errors": [
{
"context": {},
"message": "Cannot be set for adjustments of non-package tracked products",
"pointer": [
"compliance_quantity"
],
"section": "body"
},
{
"context": {},
"message": "Required for adjustments of non-package tracked products",
"pointer": [
"quantity"
],
"section": "body"
}
]
}
validates only one id can be passed
POST /public/v1/adjustments
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiNDQ4ODhhOTMtMGQxOC00YWEzLTkyNDYtOTM4YzdiN2Y4OTY3IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6Nzc1IiwidHlwIjoiYWNjZXNzIn0.Khpq_jFh2d8VsAlKLSUI9FAhikeqJ8199V5i9E2yz_Q
{
"batch_id": "094b3956-5522-4782-a6b2-f6b3dde0fd0f",
"completion_datetime": "2020-01-03T12:20:00.000000Z",
"description": "test",
"location_id": "86ac43f3-3786-450c-bca7-897c9c39f110",
"package_id": "58cae930-eb4e-4753-a834-5ec97ba4f80b",
"product_id": "01fd2484-d3a2-4860-9ff0-bc549843f03f",
"reason": "expired"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: 991456de02ee58000000000000000001-0c581ac516a70eb3-0
{
"errors": [
{
"context": {},
"message": "Only one of batch_id, package_id, or product_id can be set",
"pointer": [
"batch_id"
],
"section": "body"
},
{
"context": {},
"message": "Required for adjustments of package tracked products",
"pointer": [
"compliance_quantity"
],
"section": "body"
},
{
"context": {},
"message": "Cannot be set for adjustments of package tracked products because the source will automatically be set to the location of the package",
"pointer": [
"location_id"
],
"section": "body"
},
{
"context": {},
"message": "Only one of batch_id, package_id, or product_id can be set",
"pointer": [
"package_id"
],
"section": "body"
},
{
"context": {},
"message": "Only one of batch_id, package_id, or product_id can be set",
"pointer": [
"product_id"
],
"section": "body"
}
]
}
validates at least one id is passed
POST /public/v1/adjustments
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjQsImlhdCI6MTc3NDYyMzU2NCwiaXNzIjoiRGlzdHJ1IiwianRpIjoiZWViZjcxODMtYzNhZS00MDE5LWEwNjYtYjUwOGU5Nzg5MjYwIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYzLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6OTI2IiwidHlwIjoiYWNjZXNzIn0.gnNSW-ZSQ4vdU2hLv1Tuga--O2wSZuiIuwuhQne4BHs
{
"completion_datetime": "2020-01-03T12:20:00.000000Z",
"description": "test",
"location_id": "2df06fd6-89d4-4006-b94a-d4df704d215b",
"reason": "expired"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: 750a0797a4cc28000000000000000001-488838288c516e28-0
{
"errors": [
{
"context": {},
"message": "At least one of batch_id, package_id, or product_id must be set",
"pointer": [
"batch_id"
],
"section": "body"
},
{
"context": {},
"message": "At least one of batch_id, package_id, or product_id must be set",
"pointer": [
"package_id"
],
"section": "body"
},
{
"context": {},
"message": "At least one of batch_id, package_id, or product_id must be set",
"pointer": [
"product_id"
],
"section": "body"
},
{
"context": {},
"message": "Required for adjustments of non-package tracked products",
"pointer": [
"quantity"
],
"section": "body"
}
]
}
validate waste must be negative
POST /public/v1/adjustments
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjQsImlhdCI6MTc3NDYyMzU2NCwiaXNzIjoiRGlzdHJ1IiwianRpIjoiYzZjOTg4OGYtYTdiYi00ZjU4LTk3MWQtNmFhOGQ1ZWE1YjViIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYzLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6OTM0IiwidHlwIjoiYWNjZXNzIn0.KKYlsOmkHT6Uh36WtWX3RnhTDCKfre_FrNSLwO0JE98
{
"completion_datetime": "2020-01-03T12:20:00.000000Z",
"description": "test",
"location_id": "09e8d342-b999-4b59-b4bb-24dd27c18db9",
"product_id": "20cdfbd2-8f03-47e2-ac4e-b9c98391916e",
"quantity": 10,
"reason": "waste"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: 83d5771b1be680000000000000000001-18bb44834717c590-0
{
"errors": [
{
"context": {},
"message": "Quantity must be negative for waste adjustments",
"pointer": [
"quantity"
],
"section": "body"
}
]
}
validate compliance adjustments must not include location_id
POST /public/v1/adjustments
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiYzE3YmFkNzEtMWM0Ny00YmI1LTkxMDEtNWMwNGI0YmE0MmNlIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6ODkxIiwidHlwIjoiYWNjZXNzIn0.a3YmushrDJxv9XB5nm9fNL09MBXhP0eXI5MNDnozS44
{
"completion_datetime": "2020-01-03T12:20:00.000000Z",
"compliance_quantity": 10,
"description": "test",
"location_id": "f283e26a-45e0-4683-8229-0cd6dbc8a244",
"package_id": "9a64a3c8-3469-4c17-8e14-aa895f1d132b",
"reason": "compliance"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: 4b083ea94e9448000000000000000001-53fe5f04c0ac0aee-0
{
"errors": [
{
"context": {},
"message": "Cannot be set for adjustments of package tracked products because the source will automatically be set to the location of the package",
"pointer": [
"location_id"
],
"section": "body"
}
]
}
validate compliance adjustments must include location_id
POST /public/v1/adjustments
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiYTk4MjhhYTAtMjk4MS00Njg0LTkzMjktYzc3NzVlMzk2NDA3IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6Nzc5IiwidHlwIjoiYWNjZXNzIn0.w0O6B6fmCksoM_OFryjkagc7ozTS4f2unVXuOqAoFrU
{
"completion_datetime": "2020-01-03T12:20:00.000000Z",
"description": "test",
"product_id": "0b382f27-e9d3-4cce-9bee-9e51440eff91",
"quantity": 10,
"reason": "compliance"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: b528d70322ffd8000000000000000001-41ff0416125a2121-0
{
"errors": [
{
"context": {},
"message": "Source location is required for non-compliance adjustments",
"pointer": [
"location_id"
],
"section": "body"
}
]
}
validates product exists
POST /public/v1/adjustments
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMWFhMTUzMDYtZWUwMy00ZGUyLTk0N2MtMGFjZTkwZmVhY2Y0IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MzQ4IiwidHlwIjoiYWNjZXNzIn0.dikMmIyS0p4GEuNOltwKr96QPqFChTJqcZ-vDQ51Bkw
{
"completion_datetime": "2020-01-03T12:20:00.000000Z",
"description": "test",
"location_id": "c1afe368-03d7-43e4-8d50-06fe895fb1a2",
"product_id": "d8c34625-aa0a-45f2-a515-53988818f130",
"quantity": 10,
"reason": "compliance"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: ab9c535570e9e0000000000000000001-bebaacda7644a361-0
{
"errors": [
{
"context": {},
"message": "Product not found",
"pointer": [
"product_id"
],
"section": "body"
}
]
}
validates batch exists
POST /public/v1/adjustments
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiNzE1ZjEyNDQtNWEzNi00MjZmLTkwNzAtMTA4ZmYyNmJkMDMyIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6OTE1IiwidHlwIjoiYWNjZXNzIn0.SlMP-An2MdOYfOcFM795eRXw7GAVxAAUtO2kmsztOxY
{
"batch_id": "00000000-0000-0000-0000-0000000000fb",
"completion_datetime": "2020-01-03T12:20:00.000000Z",
"description": "test",
"location_id": "e0c0a3a9-b45f-4348-8470-4296728d1c3c",
"quantity": 10,
"reason": "compliance"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: 613d1e0f7b29e0000000000000000001-1dfabc7f0b0ceb3c-0
{
"errors": [
{
"context": {},
"message": "Batch not found",
"pointer": [
"batch_id"
],
"section": "body"
}
]
}
validates package exists
POST /public/v1/adjustments
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiOTQ0NDMwYjYtMGY5ZS00MTJmLTk0NzEtMjc2YTE4OTZiMjg5IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6Njc5IiwidHlwIjoiYWNjZXNzIn0.Oa8duCXAC7pwTogHxD_4boRY2Z0bF7AmMoSxWJNQnzk
{
"completion_datetime": "2020-01-03T12:20:00.000000Z",
"compliance_quantity": 10,
"description": "test",
"package_id": "00000000-0000-0000-0000-000000000012",
"reason": "compliance"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: 5b8fd76aac5b34000000000000000001-8ac832074fe94788-0
{
"errors": [
{
"context": {},
"message": "Package not found",
"pointer": [
"package_id"
],
"section": "body"
}
]
}
validates location exists
POST /public/v1/adjustments
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiYTJmNjU3ODYtMDc0NC00NDliLTg5ZTgtMTQ2NjdmMTM5OTEzIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6Mzg0IiwidHlwIjoiYWNjZXNzIn0.ZXn0WKXIpjAQ7auchZ-UigT4CcSMuFIVecq14Nn_0I0
{
"batch_id": "00000000-0000-0000-0000-000000000055",
"completion_datetime": "2020-01-03T12:20:00.000000Z",
"description": "test",
"location_id": "00000000-0000-0000-0000-00000000003b",
"quantity": 10,
"reason": "compliance"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: 383ddf72d45d2a000000000000000001-7f589413de3cdcc2-0
{
"errors": [
{
"context": {},
"message": "Location not found",
"pointer": [
"location_id"
],
"section": "body"
}
]
}
Request
POST /public/v1/adjustments
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| product_id | The ID of the product to adjust. Must only be provided if the product is product-tracked. | query | string | false | ||
| batch_id | The ID of the batch to adjust. Must only be provided if the batch's associated product is batch-tracked. | query | string | false | ||
| package_id | The ID of the package to adjust. Must only be provided if the package's associated product is package-tracked. | query | string | false | ||
| quantity | The quantity to adjust the stock by. Must only be provided for non-compliance adjustments. Must be negative if the adjustment reason is 'waste'. | query | number | false | ||
| compliance_quantity | The quantity to adjust the stock by. Must only be provided for compliance adjustments. | query | number | false | ||
| description | The description of the stock adjustment. Required for compliance adjustmenst. Has a max length of 800 characters for non-compliance adjustments, and 250 characters for compliance adjustments. | query | string | false | ||
| unit_cost | The cost per unit of the stock adjustment. Can only be provided for companies with cost accounting enabled. Must be empty when the quantity is negative. Must be provided if the company setting 'Require Cost on Intake and Quantity Adjustments' is true. | query | number | false | ||
| completion_datetime | The datetime of the stock adjustment. Must only be provided for compliance adjustments. | query | string | false | ||
| reason | The reason for the stock adjustment. For non-compliance adjustments, must be one of the following: 'waste', 'stolen', 'damaged', 'fire', 'write-off', 'expired', 'lab-testing', 'revaluation', 'other.' For compliance adjustments, must be a reason that is accepted by the the compliance API | query | string | false | ||
| location_id | The ID of the source location of the stock adjustment. Must only be provided for non-compliance adjustments. | query | string | false |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | The stock adjustment was inserted successfully | StockAdjustment |
Strain
Get strains
GET /public/v1/strains returns strains related to the company
GET /public/v1/strains
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjEsImlhdCI6MTc3NDYyMzU2MSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiZDQ4MzNiZmEtYWFiZC00NzE1LWI0MzEtZmI5MmM3Mzc2MDdhIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYwLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MjAwIiwidHlwIjoiYWNjZXNzIn0.kp82cEQN91zGObhG8vkeFFGe4ZpaF04PBOB6bonHhK0
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 04efd78449a042400000000000000001-74ceeb949ed8a8bb-0
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000010",
"name": "Strain 15",
"strain_type": "INDICA"
},
{
"id": "00000000-0000-0000-0000-000000000011",
"name": "Strain 16",
"strain_type": null
}
],
"next_page": null
}
Get strains filtered by various attributes
Note: The page size for this endpoint is 50k strains per page.
Request
GET /public/v1/strains
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| inserted_datetime | Filter strains by their creation datetime | query | string | false | 2022-07-10T00:00:00Z, | |
| page | Pagination information | query | number | false | ?page[number]=1 | |
| updated_datetime | Filter strains by the datetime they were most recently modified | query | string | false | ,2022-07-10T00:00:00Z |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | A list of strains | Strains |
TestResult
Get test results
GET /public/v1/test-results returns test results
GET /public/v1/test-results
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiZmFhMDEzOWUtZGQ1Ny00ZTNhLWFkZDEtNWExNTcwY2UxZDkwIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NDU0IiwidHlwIjoiYWNjZXNzIn0.feL8Hvidp2r4A7stRtKhmdKQf_xK_4oGKX1h4HxqRzE
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 4adcf9210b35a4000000000000000001-75535351ebfff21d-0
{
"data": [
{
"additional_test_results": {
"thca_percentage": "12"
},
"batch_id": null,
"cbd_mg_per_unit": "1.12345",
"cbd_percentage": "60.1234",
"id": "00000000-0000-0000-0000-00000000000b",
"is_primary": false,
"lab_license_number": "1234567890",
"lab_name": "Test Lab",
"mg_per_unit_type": "mg/g",
"name": "Test result 1",
"package_id": "00000000-0000-0000-0000-00000000000a",
"release_date": "2026-03-27",
"thc_mg_per_unit": "2.12345",
"thc_percentage": "20.1234",
"total_cbd_mg_per_unit": "3.12345",
"total_cbd_percentage": "80.1234",
"total_thc_mg_per_unit": "4.12345",
"total_thc_percentage": "40.1234",
"updated_datetime": "2026-03-27T14:59:22.668620Z"
},
{
"additional_test_results": {
"thca_percentage": "12"
},
"batch_id": "00000000-0000-0000-0000-000000000069",
"cbd_mg_per_unit": null,
"cbd_percentage": null,
"id": "00000000-0000-0000-0000-00000000000c",
"is_primary": false,
"lab_license_number": null,
"lab_name": null,
"mg_per_unit_type": "mg/g",
"name": "File.pdf",
"package_id": null,
"release_date": null,
"thc_mg_per_unit": null,
"thc_percentage": null,
"total_cbd_mg_per_unit": null,
"total_cbd_percentage": null,
"total_thc_mg_per_unit": null,
"total_thc_percentage": null,
"updated_datetime": "2026-03-27T14:59:22.685189Z"
},
{
"additional_test_results": {},
"batch_id": null,
"cbd_mg_per_unit": null,
"cbd_percentage": null,
"id": "00000000-0000-0000-0000-00000000000d",
"is_primary": false,
"lab_license_number": null,
"lab_name": null,
"mg_per_unit_type": "mg/g",
"name": "File.pdf",
"package_id": "00000000-0000-0000-0000-00000000000b",
"release_date": null,
"thc_mg_per_unit": null,
"thc_percentage": null,
"total_cbd_mg_per_unit": null,
"total_cbd_percentage": null,
"total_thc_mg_per_unit": null,
"total_thc_percentage": null,
"updated_datetime": "2026-03-27T14:59:22.767632Z"
}
],
"next_page": null
}
GET /public/v1/test-results returns only the additional test results that are present in the test result settings
GET /public/v1/test-results
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiNjAzODExYTctZjU3OS00YzlkLWI1ZjEtMjg1ZjIwMWQwMDE1IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MjczIiwidHlwIjoiYWNjZXNzIn0.uTKmhfrY8rR_gtnsIpyFVJzUmEHxt5Jm_Sb4JawWNjA
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 8b9f0cbad086f8000000000000000001-0ef13645d3d69050-0
{
"data": [
{
"additional_test_results": {
"spiroxamine_a_ug_per_g": "13",
"thiacloprid_ug_per_g": "14"
},
"batch_id": "00000000-0000-0000-0000-000000000044",
"cbd_mg_per_unit": null,
"cbd_percentage": null,
"id": "00000000-0000-0000-0000-000000000002",
"is_primary": false,
"lab_license_number": null,
"lab_name": null,
"mg_per_unit_type": "mg/g",
"name": "File.pdf",
"package_id": null,
"release_date": null,
"thc_mg_per_unit": null,
"thc_percentage": null,
"total_cbd_mg_per_unit": null,
"total_cbd_percentage": null,
"total_thc_mg_per_unit": null,
"total_thc_percentage": null,
"updated_datetime": "2026-03-27T14:59:22.041180Z"
}
],
"next_page": null
}
Get test results filtered by various attributes.
Note: The page size for this endpoint is 5000 test results per page. This endpoint returns eventually consistent data, with changes taking up to 1 second to propagate in responses.
Request
GET /public/v1/test-results
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| updated_datetime | Filter test results by the datetime they were most recently modified | query | string | false | ,2022-07-10T00:00:00Z | |
| page | Pagination information | query | number | false | ?page[number]=1 |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | A list of test results | TestResults |
Upsert a test result
POST /public/v1/test-results creates a test result for a batch tracked product
POST /public/v1/test-results
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjEsImlhdCI6MTc3NDYyMzU2MSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiMDIzNjQ3YmEtOWI2NC00YzU4LTgxMWYtNmU1MzFlM2E1YWE0IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYwLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NjciLCJ0eXAiOiJhY2Nlc3MifQ.M-zfySyWactQm1pvkrNSFK5zBESSi7nyeW0Tu4vkP38
{
"additional_test_results": {
"delta_8_thc_mg_per_unit": "17.3333",
"delta_8_thc_percentage": "12.55",
"thcva_percentage": "100"
},
"batch_id": "00000000-0000-0000-0000-000000000009",
"cbd_mg_per_unit": "1.1",
"cbd_percentage": "2.2",
"is_primary": true,
"lab_license_number": "1234567890",
"lab_name": "Test Lab",
"mg_per_unit_type": "mg/g",
"name": "Name",
"release_date": "2025-05-22",
"thc_mg_per_unit": "3.3",
"thc_percentage": "4.4",
"total_cbd_mg_per_unit": "5.5",
"total_cbd_percentage": "6.6",
"total_thc_mg_per_unit": "7.7",
"total_thc_percentage": "8.8"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 2a78a6d9c4e150000000000000000001-36c81c1aaa4b0f3b-0
{
"data": {
"additional_test_results": {
"delta_8_thc_mg_per_unit": "17.3333",
"delta_8_thc_percentage": "12.55",
"thcva_percentage": "100"
},
"batch_id": "00000000-0000-0000-0000-000000000009",
"cbd_mg_per_unit": "1.1",
"cbd_percentage": "2.2",
"id": "00000000-0000-0000-0000-000000000001",
"is_primary": true,
"lab_license_number": "1234567890",
"lab_name": "Test Lab",
"mg_per_unit_type": "mg/g",
"name": "Name",
"package_id": null,
"release_date": "2025-05-22",
"thc_mg_per_unit": "3.3",
"thc_percentage": "4.4",
"total_cbd_mg_per_unit": "5.5",
"total_cbd_percentage": "6.6",
"total_thc_mg_per_unit": "7.7",
"total_thc_percentage": "8.8",
"updated_datetime": "2026-03-27T14:59:21.541906Z"
}
}
POST /public/v1/test-results creates a test result for a package tracked product
POST /public/v1/test-results
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiNzc3MzQ3MTAtMTY5OC00ZGViLWE5MDItMzk0ZTEzM2YzOTQ4IiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6Njk1IiwidHlwIjoiYWNjZXNzIn0.VtmuEcD2MblDnaDT0ltlc26Q_m057ttyKELvHCc-DRQ
{
"additional_test_results": {},
"is_primary": false,
"lab_license_number": "1234567890",
"lab_name": "Test Lab",
"mg_per_unit_type": "mg/mL",
"name": "Name",
"package_id": "00000000-0000-0000-0000-000000000015"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: a8b9b905271ad0000000000000000001-56748fead61c35bb-0
{
"data": {
"additional_test_results": {},
"batch_id": null,
"cbd_mg_per_unit": null,
"cbd_percentage": null,
"id": "00000000-0000-0000-0000-000000000015",
"is_primary": true,
"lab_license_number": "1234567890",
"lab_name": "Test Lab",
"mg_per_unit_type": "mg/mL",
"name": "Name",
"package_id": "00000000-0000-0000-0000-000000000015",
"release_date": null,
"thc_mg_per_unit": null,
"thc_percentage": null,
"total_cbd_mg_per_unit": null,
"total_cbd_percentage": null,
"total_thc_mg_per_unit": null,
"total_thc_percentage": null,
"updated_datetime": "2026-03-27T14:59:23.358316Z"
}
}
POST /public/v1/test-results properly transforms pointer on error
POST /public/v1/test-results
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiZGJhZDU1MjctOWVmZS00MGQ2LTg0ODUtODE0YmFkMzQ5ODEzIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NjAzIiwidHlwIjoiYWNjZXNzIn0.UAvyEnjDbwyiHJ_ZuIZ0dc4YzbVxEG4g9xu75hkSpgk
{
"batch_id": "00000000-0000-0000-0000-000000000080",
"mg_per_unit_type": "mg/g",
"name": "Name"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: 7f90f2c7622940000000000000000001-af2f747cf9dad39c-0
{
"errors": [
{
"context": {},
"message": "can't be blank",
"pointer": [
"additional_test_results"
],
"section": "body"
},
{
"context": {},
"message": "can't be blank",
"pointer": [
"is_primary"
],
"section": "body"
}
]
}
POST /public/v1/test-results properly transforms pointer on service function error
POST /public/v1/test-results
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjIsImlhdCI6MTc3NDYyMzU2MiwiaXNzIjoiRGlzdHJ1IiwianRpIjoiNDRjYjc3OWItMzJhMy00NDA4LThlMzctYWExZmJiZjVlYThmIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYxLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NjE2IiwidHlwIjoiYWNjZXNzIn0.ie21OPc5B3dV7E2UAMNN1SzVCdHpb0rp7ZUs-_GrecY
{
"additional_test_results": {},
"batch_id": "00000000-0000-0000-0000-000000000082",
"is_primary": false,
"mg_per_unit_type": "mg/g",
"name": "Name",
"total_cbd_mg_per_unit": "-3.3456",
"total_cbd_percentage": "2.234567",
"total_thc_mg_per_unit": "-4.4567",
"total_thc_percentage": "1.123456"
}
Response
400
cache-control: max-age=0, private, must-revalidate
content-type: application/json; charset=utf-8
b3: d67d29c4450d00000000000000000001-119ffbac89dc4da2-0
{
"errors": [
{
"context": {},
"message": "must be greater than or equal to 0",
"pointer": [
"total_cbd_mg_per_unit"
],
"section": "body"
},
{
"context": {},
"message": "Must have at most 4 decimal digits",
"pointer": [
"total_cbd_percentage"
],
"section": "body"
},
{
"context": {},
"message": "must be greater than or equal to 0",
"pointer": [
"total_thc_mg_per_unit"
],
"section": "body"
},
{
"context": {},
"message": "Must have at most 4 decimal digits",
"pointer": [
"total_thc_percentage"
],
"section": "body"
}
]
}
POST /public/v1/test-results properly updates a test result
POST /public/v1/test-results
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjMsImlhdCI6MTc3NDYyMzU2MywiaXNzIjoiRGlzdHJ1IiwianRpIjoiZGQxYTI3MzMtOTliZC00MWEzLWE5ODEtMTMxZTEyODNlMzZjIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYyLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6NjQyIiwidHlwIjoiYWNjZXNzIn0.YPGaPABF0oPsULO-KePVt6ovF0zcbajfO0_uCo_m2nk
{
"additional_test_results": {
"thca_percentage": "15"
},
"id": "00000000-0000-0000-0000-000000000010",
"is_primary": true,
"lab_name": "after lab name",
"mg_per_unit_type": "mg/mL",
"name": "after name",
"release_date": "2025-05-23",
"total_thc_percentage": "14"
}
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: d07e7815fcacf0000000000000000001-e87ca966d4a740c3-0
{
"data": {
"additional_test_results": {
"thca_percentage": "15"
},
"batch_id": "00000000-0000-0000-0000-000000000089",
"cbd_mg_per_unit": null,
"cbd_percentage": null,
"id": "00000000-0000-0000-0000-000000000010",
"is_primary": true,
"lab_license_number": null,
"lab_name": "after lab name",
"mg_per_unit_type": "mg/mL",
"name": "after name",
"package_id": null,
"release_date": "2025-05-23",
"thc_mg_per_unit": null,
"thc_percentage": null,
"total_cbd_mg_per_unit": null,
"total_cbd_percentage": null,
"total_thc_mg_per_unit": null,
"total_thc_percentage": "14",
"updated_datetime": "2026-03-27T14:59:23.129187Z"
}
}
Upsert a single test result. To update an existing test result, pass in an existing test result ID in the id field. When updating a test result, you must pass in all fields including all additional test results (no sparse update currently supported). Result percentage values can have no more than 4 decimal places.
Request
POST /public/v1/test-results
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| id | Unique ID for this test result. If it exists, an update will be performed, and will otherwise throw an error. Only non-compliance tracked test results can be updated. | query | string | false | ||
| package_id | The ID of the package this test result belongs to. Cannot be provided if either id or batch_id is provided. | query | string | false | 123e4567-e89b-12d3-a456-426614174000 | |
| batch_id | The ID of the batch this test result belongs to. Cannot be provided if either id or package_id is provided. | query | string | false | 123e4567-e89b-12d3-a456-426614174000 | |
| additional_test_results | The additional tests results for this test result. Check here for the valid options. | query | object | false | ||
| mg_per_unit_type | The unit type for the mg per unit fields | query | string | false | mg/g | |
| is_primary | Setting a test result to is_primary: true will propagate the test result to child packages if applicable. Cannot update a test_result from is_primary: true to is_primary: false. If you want to do this, you must set a different test result on the same package/batch to is_primary: true. Once done, this test_result will be set to is_primary: false automatically. | query | boolean | false | true | |
| release_date | The release date for this test result | query | string | false | 2022-07-10 | |
| lab_license_number | The license number of this test result's lab | query | string | false | 1234567890 | |
| lab_name | The name of this test result's lab | query | string | false | Lab Name | |
| name | The name of this test result | query | string | false | Test Result Name | |
| thc_percentage | The THC percentage for this test result. Max precision is 4 decimal places. | query | decimal | false | 1.5 | |
| total_thc_percentage | The total THC percentage for this test result. Max precision is 4 decimal places. | query | decimal | false | 1.5 | |
| thc_mg_per_unit | The THC mg per unit for this test result. | query | decimal | false | 1.5 | |
| total_thc_mg_per_unit | The total THC mg per unit for this test result. | query | decimal | false | 1.5 | |
| cbd_percentage | The CBD percentage for this test result. Max precision is 4 decimal places. | query | decimal | false | 1.5 | |
| total_cbd_percentage | The total CBD percentage for this test result. Max precision is 4 decimal places. | query | decimal | false | 1.5 | |
| cbd_mg_per_unit | The CBD mg per unit for this test result. | query | decimal | false | 1.5 | |
| total_cbd_mg_per_unit | The total CBD mg per unit for this test result. | query | decimal | false | 1.5 |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | A single test result | TestResult |
User
Get users
GET /public/v1/users returns users related to the company
GET /public/v1/users
content-type: application/json
accept: application/json
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJEaXN0cnUiLCJleHAiOjE4MDYwNzMxNjEsImlhdCI6MTc3NDYyMzU2MSwiaXNzIjoiRGlzdHJ1IiwianRpIjoiNjFjNzM5MzktYWM2Yy00OTBiLTg1MzktYzQ4ZTRiN2FmMmZkIiwibW9iaWxlIjpmYWxzZSwibmJmIjoxNzc0NjIzNTYwLCJwbGF0Zm9ybSI6IkFQSSIsInN1YiI6IlVzZXI6MjQ1IiwidHlwIjoiYWNjZXNzIn0.YFKSskEG0ybKWYELmFTIlcOKODbljTW2EYXVLuxpLH0
Response
200
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
b3: 1ef05d4b16b9fa000000000000000001-083495cbf0268648-0
{
"data": [
{
"banned": false,
"deleted_at": null,
"email": "owner-240@example.com",
"full_name": "FirstName486 LastName487",
"id": "00000000-0000-0000-0000-0000000000f5",
"role": {
"id": "00000000-0000-0000-0000-0000000000f1",
"name": "Admin 236"
}
},
{
"banned": false,
"deleted_at": null,
"email": "owner-241@example.com",
"full_name": "FirstName488 LastName489",
"id": "00000000-0000-0000-0000-0000000000f6",
"role": {
"id": "00000000-0000-0000-0000-0000000000f2",
"name": "Admin 237"
}
}
],
"next_page": null
}
Get users sorted by their creation date and filtered by various attributes
Note: The page size for this endpoint is 1000 users per page. This endpoint returns eventually consistent data, with changes taking up to 1 second to propagate in responses.
Request
GET /public/v1/users
Parameters
| Parameter | Description | In | Type | Required | Default | Example |
|---|---|---|---|---|---|---|
| inserted_datetime | Filter users by their creation datetime | query | string | false | 2022-07-10T00:00:00Z, | |
| deleted | Filter deleted users. no returns non-deleted, only returns deleted, include returns both. |
query | string | false | no | |
| page | Pagination information | query | number | false | ?page[number]=1 | |
| updated_datetime | Filter users by the datetime they were most recently modified | query | string | false | ,2022-07-10T00:00:00Z |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | A list of users | Users |
Changelog
2024-10-2
- Added GET
/public/v1/strainsendpoint. - In endpoint GET /public/v1/companies, added fields category and relationship to the response.
2024-11-6
- Field thc of type string in the Product object was replaced with total_thc field of type number.
- Field cbd of type string in the Product object was replaced with total_cbd field of type number.
- Added total_cannabinoid_unit field to Product object. Allowed values are either "MG" or "PERCENT".
2024-12-24
- Added billing_location_id to POST
/public/v1/purchasesendpoint.
2024-12-26
- Added msrp, is_active, category.type and images.rank to GET
/public/v1/products.
2025-01-08
- Added GET
/public/v1/payment-methodsendpoint.
2025-01-15
- Added POST
/public/v1/purchases/:id/paymentsendpoint. - Added POST
/public/v1/invoices/:id/paymentsendpoint.
2025-01-17
- Added
product_unit_quantityto GET/public/v1/packagesendpoint. - Added
product_unit_typeto GET/public/v1/packagesendpoint.
2025-01-31
- Added POST
/public/v1/batchesendpoint. - Added batch_number, product_id, owner_id and description to GET
/public/v1/batchesendpoint. - Added title and phone_number to GET
/public/v1/contactsendpoint.
2025-02-26
Page size change from 50,000 to 5000 for the following endpoints:
- GET
/public/v1/batches - GET
/public/v1/companies - GET
/public/v1/contacts - GET
/public/v1/inventory - GET
/public/v1/packages - GET
/public/v1/products - GET
/public/v1/purchases
- GET
2025-08-19
- All GET endpoints now return eventually consistent data, with changes taking up to 1 second to propagate in responses
2025-03-05
- Added GET
/public/v1/assembliesendpoint.
2025-03-11
- Added
total_cost_actual,total_cost_defaultandreturned_quantityto "items" in GET/public/v1/invoicesendpoint. - Added
total_cost_actual,total_cost_defaultandreturned_quantityto "items" in GET/public/v1/invoices/:idendpoint. - Added
total_cost_actual,total_cost_defaultandreturned_quantityto "items" in GET/public/v1/ordersendpoint. - Added
total_cost_actual,total_cost_defaultandreturned_quantityto "items" in GET/public/v1/orders/:idendpoint.
2025-03-18
- Modified
unit_net_weightandunit_serving_sizein GET/public/v1/productsendpoint: These fields can now be populated regardless of the product's unit type.
2025-04-09
- Added the following fields to GET
/public/v1/companiesendpoint:legal_business_namedefault_emailphone_numberinvoice_emailsales_order_emailpurchase_order_emailorder_shipment_emailwebsitedefault_sales_order_notesdefault_purchase_order_notesoutstanding_balance_thresholdowner_id
2025-05-06
- Added
is_trade_sampleto GET/public/v1/packagesendpoint.
2025-05-13
- Added GET
/public/v1/adjustmentsendpoint.
2025-05-14
Added
custom_datato the response of the following endpoints:- GET
/public/v1/assemblies - GET
/public/v1/batches - POST
/public/v1/batches - GET
/public/v1/companies - GET
/public/v1/contacts - GET
/public/v1/invoices - GET
/public/v1/invoices/:id - POST
/public/v1/invoices - GET
/public/v1/orders - GET
/public/v1/orders/:id - POST
/public/v1/orders - GET
/public/v1/packages - GET
/public/v1/products - POST
/public/v1/products - GET
/public/v1/purchases - POST
/public/v1/purchases
- GET
2025-05-15
- Added POST
/public/v1/stock_adjustmentsendpoint.
2025-05-16
- Added GET
/public/v1/test-results - Added POST
/public/v1/test-results
2025-05-18
- Added
leaflink_order_numberto GET/public/v1/orders
2025-05-22
- Added
external_nameto GET/POST/public/v1/products
2025-05-27
- Added
biotrack_idandmetrc_transfer_idto POST/public/v1/orders
2025-06-09
- Added POST
/public/v1/file-attachmentsendpoint for uploading files and attaching them to business entities (products, orders, purchases, etc.).
2025-06-12
- Added
metrc_transfer_idandbiotrack_idto GET/public/v1/orders
2025-06-12
- Changed
coston GET/public/v1/assembliestototal_cost_actualiningredients - Added
total_cost_defaultto GET/public/v1/assembliesiningredients - Added
total_cost_actualto GET/public/v1/assembliesinadditional_costs - Added
total_cost_defaultto GET/public/v1/assembliesinadditional_costs
2025-07-01
- Added
description_markdownto GET/POST/public/v1/products
2025-08-20
- Added GET
/public/v1/product-pos-mappingsendpoint - Added POST
/public/v1/product-pos-mappingsendpoint - Added DELETE
/public/v1/product-pos-mappings/:idendpoint
2025-08-21
- Added
groupto GET/public/v1/companies
2025-09-10
Added
cost_per_unit_actualandcost_per_unit_defaultto the following endpoints:- GET
public/v1/assemblies - GET
public/v1/orders - GET
public/v1/orders/:id - GET
public/v1/invoices - GET
public/v1/invoices/:id - GET
public/v1/batches - GET
public/v1/packages
- GET
Added fields
total_cost_actual,total_cost_defaultand attributeinclude_coststo the following endpoints:- GET
public/v1/batches - GET
public/v1/packages
- GET
2025-15-10
Added the following fields to
public/v1/inventorytotal_cost_actualtotal_cost_defaultcost_per_unit_actualcost_per_unit_default
2025-19-10
- Added
unit_costto the endpoint GETpublic/v1/products
2025-24-10
Added the following fields to
public/v1/productsunit_net_weight_serving_size_unit_typeunit_net_weightunit_serving_size
2026-01-19
Added the following endpoints:
- POST
public/v1/contacts - POST
public/v1/custom-fields
- POST
Added the following fields to
public/v1/adjustmentscompliance_unit_typeunit_type
Added the
batch_idsandlocation_idsfilter parameters to GETpublic/v1/inventory.Added the
product_idandbatch_numberfilter parameters to GETpublic/v1/batches.Added the
product_namefilter parameter to GETpublic/v1/products.Added the
product_idsfilter parameter to GETpublic/v1/packages.
2026-01-21
- Added the
manufactured_datetimefield to GETpublic/v1/batchesand POSTpublic/v1/batches. - Added the
assembly_numberandestimated_start_datefields to GETpublic/v1/assemblies. - Added the
reservedfield to GETpublic/v1/inventory.
2026-01-23
- Added the
deleted_atfield and thedeletedfilter parameter to the following endpoints:- GET
public/v1/batches(breaking change: deleted batches are no longer returned by default) - GET
public/v1/companies - GET
public/v1/contacts - GET
public/v1/locations - GET
public/v1/payment_methods - GET
public/v1/products(breaking change: deleted products are no longer returned by default) - GET
public/v1/users
- GET
- Added
estimated_departure_datetimeandestimate_arrival_datetimetometrc_transfer_template_transporter_infofield in POSTpublic/v1/orders.- Added automatic estimated departure / arrival calculations for transporters such that, if left blank, the fields will be populated with the first departure estimate being the time that the template was sent to Metrc, the drive time for each transporter being 1 hour, and the departure of the next transporter being the arrival time of the previous transporter.
- Modified Destination estimated departure / arrival times to be the first departure and the last arrival of the specified transporters.
2026-02-10
- Added the
payment_terms_namefield to GETpublic/v1/orders
2026-02-12
- Added the
completion_datetimeas a query parameter to GETpublic/v1/adjustments - Added the
inserted_atfield topublic/v1/adjustments
2026-02-13
- Added
batch_ids[]query parameter to GET/public/v1/batchesendpoint to filter batches by batch IDs.
2026-03-10
- Added
POST /public/v1/products/{id}/imagesendpoint - Added
POST /public/v1/companiesendpoint
2026-03-27
- Removed
POST /public/v1/products/{id}/imagesendpoint