Maxim

Maxim

Last updated on Oct 8, 2026

Returns a product's details, its stock at a storage location and its components.

v2/products/get_entry.php

Parameters

Field Type Required Description
product_id int Yes Product ID
storage_id int Yes Storage location ID

The product is returned only if it is stocked at storage location storage_id. Stock across all storage locations at once is returned by v1/products/get_stocks.

Response

An object product with the product's fields, its stock at storage location storage_id, its categories, suppliers, alternative SKUs and components.

Field Type Description
id int Product ID
name string Name
sku string SKU
unit string Unit of measure, a code from Units of Measure
price float Sale price per unit
cost float Cost per unit
batch_size float Batch size: the product quantity the components are given for
notes string Notes
archived int 1 if the product is archived
stock float Stock at storage location storage_id
minimum float Minimum stock at storage location storage_id
planned float Stock change from operations in the Planned status. null if there are none
categories array The product's categories: objects with id and name
suppliers array The product's suppliers: objects with id and name
alternative_sku array Alternative SKUs: objects with label and sku

Besides these fields, the object holds the components:

Field Type Description
materials array Materials in the components
products array Subassemblies in the components
resources array Resources in the components

Fields of the materials, products and resources lines:

Field Description
id Material, product or resource ID
name Name
sku SKU. Materials and subassemblies only
type Resource calculation type. Resources only (see Creating a Resource)
dynamic 1 if the price or percentage is specified in the product components. Resources only
base Calculation basis of a percentage resource: cost or price. Resources only
amount_per_batch Quantity per batch
amount_per_unit Quantity per product unit: amount_per_batch / batch_size
loss_percent Loss, in percent. Materials and subassemblies only
unit Unit of measure. "%" for a percentage resource
cost_per_unit Line cost per product unit
cost_per_batch Line cost per batch
position Line position: shared by materials and products, separate for resources

For a resource of the fixed-rate type with its price in the product components, amount_per_batch holds a money amount, not a quantity.

cost_per_unit and cost_per_batch account for loss when loss_percent > 0.

The component lines, categories and suppliers from the response can be sent to v1/products/edit unchanged.

Example request

{
    "product_id": 3120,
    "storage_id": 3999
}

Example response

{
    "success": true,
    "product": {
        "id": 3120,
        "name": "Dining table",
        "sku": "P100",
        "price": 45000,
        "cost": 13604.25,
        "batch_size": 10,
        "notes": "",
        "archived": 0,
        "stock": 12,
        "minimum": 3,
        "planned": null,
        "unit": "pcs",
        "categories": [
            {
                "id": 21,
                "name": "Furniture"
            }
        ],
        "alternative_sku": [
            {
                "label": "Shopify",
                "sku": "SH-P100"
            }
        ],
        "suppliers": [
            {
                "id": 46,
                "name": "Furnitrade Ltd"
            }
        ],
        "materials": [
            {
                "id": 2051,
                "name": "Oak board",
                "sku": "M010",
                "amount_per_unit": 0.05,
                "amount_per_batch": 0.5,
                "loss_percent": 5,
                "unit": "cu m",
                "cost_per_unit": 7087.5,
                "cost_per_batch": 70875,
                "position": 0
            },
            {
                "id": 2060,
                "name": "Wood screw 4x40",
                "sku": "M024",
                "amount_per_unit": 40,
                "amount_per_batch": 400,
                "loss_percent": 0,
                "unit": "pcs",
                "cost_per_unit": 80,
                "cost_per_batch": 800,
                "position": 1
            }
        ],
        "products": [
            {
                "id": 312,
                "name": "Table leg",
                "sku": "P012",
                "amount_per_unit": 4,
                "amount_per_batch": 40,
                "loss_percent": 0,
                "unit": "pcs",
                "cost_per_unit": 3400,
                "cost_per_batch": 34000,
                "position": 2
            }
        ],
        "resources": [
            {
                "id": 57,
                "name": "Carpenter's work",
                "type": "rate",
                "dynamic": 0,
                "base": null,
                "amount_per_unit": 3,
                "amount_per_batch": 30,
                "unit": "h",
                "cost_per_unit": 1800,
                "cost_per_batch": 18000,
                "position": 0
            },
            {
                "id": 58,
                "name": "Overhead",
                "type": "percent",
                "dynamic": 0,
                "base": "cost",
                "amount_per_unit": 10,
                "amount_per_batch": 10,
                "unit": "%",
                "cost_per_unit": 1236.75,
                "cost_per_batch": 12367.5,
                "position": 1
            }
        ]
    }
}

Errors

Error Reason
No product_id in input A required field is missing (instead of product_id, the field's name)
Storage ID not found Storage location not found or deleted
Product not found or access denied Product not found, deleted or not stocked at the storage location

Version v1

The v1/products/get_entry method accepts the same parameters and returns the same product fields. Only the components are represented differently, so use v2 in new integrations.

What v1 v2
Components A single components array: materials and subassemblies together Separate materials, products and resources arrays
id in component lines Prefixed: "m-123" for a material, "p-45" for a subassembly Numeric item id
Sending lines back to add and edit Not possible as is, the prefixed ids get in the way Possible as is

Besides, v1 returns internal fields that v2 omits: product.status and the status of component lines (always 1) and product.percent (computed from cost and price).