Distru Inventory Valuation API

The InventoryValuation API from Distru — 1 operation(s) for inventoryvaluation.

Operations 1

GET /public/v1/reports/inventory-valuation Get the Inventory Valuation report #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/distru:distru-inventoryvaluation-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

distru-inventoryvaluation-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  license:
    name: Proprietary
    url: https://www.distru.com/legal/terms-of-service
  title: Distru Inventory Valuation API
  version: '1.0'
servers:
- url: https://app.distru.com
security:
- Bearer: []
tags:
- name: InventoryValuation
paths:
  /public/v1/reports/inventory-valuation:
    get:
      description: 'Returns one row per product with its current on-hand position — active, assembling, reserved, available, incoming, and pending-output quantities — alongside the product''s descriptive attributes (SKU, vendor, brand, unit type, category, subcategory, group, owner), its unit cost and price, its inventory alert thresholds, and its active inventory value. This is a read-only snapshot computed at request time; it never changes inventory, and does not touch compliance systems (Metrc/BioTrack). Use it to reconcile stock and value a company''s holdings, not to drive stock movements.


        Quantities are derived, not stored verbatim:

        • `available_quantity` is `active_quantity` minus `reserved_quantity`, and can be negative when reservations exceed on-hand stock.

        • `incoming_quantity` sums quantities on open (not-yet-received) purchases; `pending_output_quantity` sums the output still owed by open assemblies.

        • Active and assembling quantities count only inventory that is itself active. When `location_ids` and/or `user_ids` are supplied, the counted stock is narrowed to those locations and users (see those params).


        The active value is `active_quantity` × unit price by default. Pass `calculation_method=cost` to value it by unit cost instead; this also renames the value column (`active_value_price` becomes `active_value_cost`). A product with no unit cost set is valued at 0 under `cost` (unit price is always set, so `price` never hits this case).


        Every value is returned as it appears in the report''s CSV export, with numeric cells returned as strings (currency and comma formatting stripped, matching the rest of the API); a few identifier-like values with significant leading zeros keep their display string. Any Product custom fields configured for the company are appended as extra keys on each row (one per custom field), so the row shape varies by company. Report-level information (the resolved report date and column definitions) is returned under `meta`. All matching products are returned; there is no pagination. Rows come back ordered by `available_quantity`, highest first.


        Each row also carries the IDs of the records it names — `product_id`, `vendor_id` and `brand_id`, each right after its name column — so a row can be followed to the product or company endpoints without a name lookup. The CSV export leaves these ID columns out.


        Required permission: `reports_permissions_inventory_valuation`.'
      operationId: DistruPublic.V1.Report.InventoryValuationController.index
      parameters:
      - description: 'Keeps only products that match the term. Matching is case-insensitive: a product is kept when the term appears anywhere in its name or SKU, or when the term is a close fuzzy match on the name (so minor misspellings of the name still match). Omit (or pass empty) to return every product.'
        in: query
        name: search
        required: false
        example: ?search=Blue%20Dream
        schema:
          type: string
      - description: How to value active inventory. `price` (the default when omitted) values each product at `active_quantity` × unit price; `cost` values it at `active_quantity` × unit cost and renames the value column from `active_value_price` to `active_value_cost`. A product with no unit cost set is valued at 0 under `cost`.
        in: query
        name: calculation_method
        required: false
        schema:
          type: string
          enum:
          - cost
          - price
      - description: Narrows the active/assembling/reserved/incoming/pending-output stock counted to these locations. Values are Distru location IDs. Combined with `user_ids` as a union — stock counts if it sits at any listed location OR belongs to any listed user. Omit (or pass empty) to count stock across all locations.
        in: query
        name: location_ids
        required: false
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - description: Narrows the counted stock to inventory belonging to these users. Values are Distru user IDs. Combined with `location_ids` as a union (see that param). Omit (or pass empty) to count stock across all users.
        in: query
        name: user_ids
        required: false
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - description: Keeps only products supplied by these vendors. Values are Distru vendor IDs (the vendor company relationship). Omit (or pass empty) to include every vendor.
        in: query
        name: vendor_ids
        required: false
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - description: Keeps only products under these brands. Values are Distru brand IDs (the brand company relationship). Omit (or pass empty) to include every brand.
        in: query
        name: brand_ids
        required: false
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          description: The Inventory Valuation report
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/InventoryValuationReport'
        '400':
          description: Invalid parameters
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API token
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: The API token lacks the required permission
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      summary: Get the Inventory Valuation report
      tags:
      - InventoryValuation
components:
  schemas:
    InventoryValuationReport:
      description: The Inventory Valuation report
      properties:
        data:
          description: The report rows
          items:
            $ref: '#/components/schemas/InventoryValuationReportRow'
          type: array
        meta:
          $ref: '#/components/schemas/InventoryValuationReportMeta'
      required:
      - meta
      - data
      title: InventoryValuationReport
      type: object
    ErrorResponse:
      description: The envelope returned by every failed request (400, 401, 403, 404, 429). `errors` always holds at least one entry.
      properties:
        errors:
          description: One or more errors describing why the request failed.
          items:
            $ref: '#/components/schemas/Error'
          type: array
      required:
      - errors
      title: ErrorResponse
      type: object
    InventoryValuationReportRow:
      description: 'A single row of the Inventory Valuation report (one product). Companies with Product custom fields will see additional keys. When `calculation_method=cost`, the `active_value_price` key is returned as `active_value_cost` instead.

        '
      properties:
        active_quantity:
          description: The active on-hand quantity, counting only active inventory in the requested locations/users. Defaults to 0 when the product has no active stock.
          type: string
        active_value_price:
          description: '`active_quantity` × unit price. Present only under the default `calculation_method=price`; when `calculation_method=cost`, this key is replaced by `active_value_cost` (`active_quantity` × unit cost, using 0 when unit cost is null).'
          type: string
        assembling_quantity:
          description: The quantity currently reserved inside in-progress assemblies. 0 when none.
          type: string
        available_quantity:
          description: '`active_quantity` minus `reserved_quantity`. Can be negative when reservations exceed on-hand stock.'
          type: string
        brand:
          description: The name of the product's brand, or null when it has none
          type: string
        brand_id:
          description: The brand's company ID — the `id` [GET /public/v1/companies](#get-companies) returns — or null when the product has no brand.
          type: string
        category:
          description: The product's category, or null when it has none
          type: string
        group:
          description: The product's group, or null when it has none
          type: string
        image_url:
          description: URL of the product's thumbnail image, or null when it has no image
          type: string
        incoming_quantity:
          description: The quantity on open (not-yet-received) purchases. 0 when none.
          type: string
        inventory_threshold_max:
          description: The product's inventory alert maximum, or null when no threshold is set
          type: string
        inventory_threshold_min:
          description: The product's inventory alert minimum, or null when no threshold is set
          type: string
        name:
          description: The product name. Inactive products are prefixed to mark them.
          type: string
        owner:
          description: The full name of the product's owner, or null when unassigned
          type: string
        pending_output_quantity:
          description: The output quantity still owed by open assemblies. 0 when none.
          type: string
        product_id:
          description: The product's ID — the `id` [GET /public/v1/products](#get-products) returns.
          type: string
        reserved_quantity:
          description: The quantity reserved against open sales orders. 0 when none.
          type: string
        sku:
          description: The product SKU
          type: string
        subcategory:
          description: The product's subcategory, or null when it has none
          type: string
        unit_cost:
          description: The product's unit cost, or null when no cost is set. Used for the value column when `calculation_method=cost`.
          type: string
        unit_price:
          description: The product's unit price. Used for the value column by default (`calculation_method=price`).
          type: string
        unit_type:
          description: The product's unit of measure (e.g. `Each`, `Gram`)
          type: string
        vendor:
          description: The name of the product's vendor
          type: string
        vendor_id:
          description: The vendor's company ID — the `id` [GET /public/v1/companies](#get-companies) returns.
          type: string
      required:
      - unit_price
      - pending_output_quantity
      - incoming_quantity
      - available_quantity
      - reserved_quantity
      - assembling_quantity
      - active_quantity
      - unit_type
      - vendor_id
      - vendor
      - sku
      - product_id
      - name
      title: InventoryValuationReportRow
      type: object
    Error:
      description: A single error describing one problem with the request.
      properties:
        message:
          description: Human-readable, customer-facing description of what went wrong.
          type: string
        pointer:
          description: 'Path to the offending field in the request: field names and, for items in a list, their integer position — e.g. ["items", 0, "quantity"]. ["base"] means the error applies to the request as a whole rather than one field.'
          items: {}
          type: array
      required:
      - message
      - pointer
      title: Error
      type: object
    InventoryValuationReportColumn:
      properties:
        key:
          description: The key used for this column in each data row
          type: string
        label:
          description: The human-readable label of the column
          type: string
      required:
      - label
      - key
      title: InventoryValuationReportColumn
      type: object
    InventoryValuationReportMeta:
      description: Report-level metadata
      properties:
        columns:
          description: The ordered column definitions for the rows in `data`, including one entry per Product custom field. The value column key reflects `calculation_method` (`active_value_price` or `active_value_cost`).
          items:
            $ref: '#/components/schemas/InventoryValuationReportColumn'
          type: array
        date_range:
          description: Human-readable date the report was generated, in the company's timezone. Despite               the name this is the generation timestamp, not a filtered date range — inventory               valuation is a point-in-time snapshot with no date-range filter.
          type: string
        report:
          description: The report identifier (always `inventory_valuation`)
          type: string
      required:
      - columns
      - date_range
      - report
      title: InventoryValuationReportMeta
      type: object
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
      description: 'API token generated in Distru (Settings → Distru API). Send it on every request as `Authorization: Bearer YOUR_API_TOKEN`.'