> ## Documentation Index
> Fetch the complete documentation index at: https://docs.autoprintfarm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List finished-goods inventory

> Returns your finished-goods stock levels, ordered by SKU. Pricing columns (`unit_price`, `profit_margin`, `extra_cost`) and internal assembly workflow fields (`assembly_status`, `quantity_needs_assembly`, `print_job_id`) are never exposed. Use `GET /inventory/{id}` for the composite (kit) breakdown including `parts_on_hand`.



## OpenAPI

````yaml /api-reference/openapi.json get /inventory
openapi: 3.1.0
info:
  title: AutoPrintFarm Public API
  version: 1.0.0
  description: >-
    Public API for AutoPrintFarm — read + write surface for printers, jobs,
    inventory, orders, SKUs, files, worklist, and assembly. Authorization uses
    three scopes: `read` (any list/get), `write` (data mutations — create,
    update, delete, uploads, fulfillment), and `control` (physical printer
    actions: start, pause, resume, stop, heaters, light, filament). Authenticate
    with an API key minted from Settings → API Keys in the AutoPrintFarm
    dashboard.
  contact:
    name: AutoPrintFarm
    url: https://autoprintfarm.com
servers:
  - url: https://api.autoprintfarm.com/public/v1
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Printers
    description: Printer fleet status
  - name: Jobs
    description: Print job queue and history
  - name: Inventory
    description: Finished-goods stock levels
  - name: Orders
    description: Customer orders and line items
  - name: Wiki
    description: Internal documentation articles
  - name: Worklist
    description: Operational task queue
  - name: Products
    description: Product catalog, SKUs, components, and color presets
  - name: Files
    description: Print file metadata and versions
  - name: Hubs
    description: Hub fleet and connection status
  - name: Assembly
    description: Post-print assembly tasks with bundled wiki
  - name: Materials
    description: Filament, components, packaging, and printer parts inventory
  - name: Analytics
    description: >-
      Dashboard rollups and reporting (overview, production, printers, failures,
      inventory, revenue)
paths:
  /inventory:
    get:
      tags:
        - Inventory
      summary: List finished-goods inventory
      description: >-
        Returns your finished-goods stock levels, ordered by SKU. Pricing
        columns (`unit_price`, `profit_margin`, `extra_cost`) and internal
        assembly workflow fields (`assembly_status`, `quantity_needs_assembly`,
        `print_job_id`) are never exposed. Use `GET /inventory/{id}` for the
        composite (kit) breakdown including `parts_on_hand`.
      parameters:
        - schema:
            type: string
            enum:
              - 'true'
              - 'false'
            description: >-
              When `true`, returns only items where `ready_stock` is at or below
              `low_stock_threshold` (items with a null threshold are excluded).
              When `false`, returns the inverse.
          required: false
          description: >-
            When `true`, returns only items where `ready_stock` is at or below
            `low_stock_threshold` (items with a null threshold are excluded).
            When `false`, returns the inverse.
          name: low_stock
          in: query
        - schema:
            type: string
            description: Filter by exact SKU code (case-sensitive).
          required: false
          description: Filter by exact SKU code (case-sensitive).
          name: sku
          in: query
        - schema:
            type: string
            description: Filter by exact material (case-sensitive, e.g. `PLA`, `PETG`).
          required: false
          description: Filter by exact material (case-sensitive, e.g. `PLA`, `PETG`).
          name: material
          in: query
        - schema:
            type: string
            enum:
              - in_stock
              - low_stock
              - out_of_stock
              - needs_assembly
            description: >-
              Filter by stored `status` (computed at write-time from
              `ready_stock`, `low_stock_threshold`, and
              `quantity_needs_assembly`).
          required: false
          description: >-
            Filter by stored `status` (computed at write-time from
            `ready_stock`, `low_stock_threshold`, and
            `quantity_needs_assembly`).
          name: status
          in: query
        - schema:
            type: integer
            minimum: 1
            maximum: 500
            description: >-
              Opt-in pagination: max rows to return (1-500). Omit `limit` and
              `offset` to return the full result set (default). Supplying either
              enables pagination and adds a `meta` block to the response.
          required: false
          description: >-
            Opt-in pagination: max rows to return (1-500). Omit `limit` and
            `offset` to return the full result set (default). Supplying either
            enables pagination and adds a `meta` block to the response.
          name: limit
          in: query
        - schema:
            type:
              - integer
              - 'null'
            minimum: 0
            description: >-
              Number of rows to skip for pagination (requires `limit` for a
              stable page).
          required: false
          description: >-
            Number of rows to skip for pagination (requires `limit` for a stable
            page).
          name: offset
          in: query
      responses:
        '200':
          description: Inventory list
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - true
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/InventoryItem'
                  meta:
                    type: object
                    properties:
                      limit:
                        type: number
                        description: >-
                          Page size used (echoed; defaults to 500 when only
                          offset is supplied)
                      offset:
                        type: number
                        description: Offset used (echoed)
                      count:
                        type: number
                        description: Number of rows in this page
                    required:
                      - limit
                      - offset
                      - count
                    description: >-
                      Present only when pagination (`limit`/`offset`) is
                      requested.
                required:
                  - success
                  - data
        '401':
          description: Missing, invalid, revoked, or expired API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: API key lacks the required scope
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate limit exceeded (120 req/min/key)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - bearerAuth:
            - read
components:
  schemas:
    InventoryItem:
      type: object
      properties:
        id:
          type: string
        product_sku_id:
          type: string
        sku:
          type: string
        color:
          type: string
        material:
          type: string
        ready_stock:
          type: number
        low_stock_threshold:
          type:
            - number
            - 'null'
        status:
          type:
            - string
            - 'null'
        image_url:
          type:
            - string
            - 'null'
        is_active:
          type:
            - boolean
            - 'null'
        created_at:
          type:
            - string
            - 'null'
        updated_at:
          type:
            - string
            - 'null'
      required:
        - id
        - product_sku_id
        - sku
        - color
        - material
        - ready_stock
        - low_stock_threshold
        - status
        - image_url
        - is_active
        - created_at
        - updated_at
    Error:
      type: object
      properties:
        success:
          type: boolean
          enum:
            - false
        error:
          type: object
          properties:
            code:
              type: string
              description: >-
                Machine-readable error code (e.g. NOT_FOUND, VALIDATION_ERROR,
                FORBIDDEN, HUB_OFFLINE). Stable across releases — use this for
                branching.
              example: NOT_FOUND
            message:
              type: string
              description: >-
                Human-readable error message. May vary across releases — do not
                branch on this.
              example: Resource not found
            details:
              description: >-
                Optional structured detail. For VALIDATION_ERROR this is `{
                field: [messages] }`.
          required:
            - code
            - message
          description: Error detail object
      required:
        - success
        - error
      description: Standard error response envelope
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: apf_live_<64 hex>
      description: >-
        API keys are minted in the AutoPrintFarm web app under Settings → API
        Keys. Send as `Authorization: Bearer apf_live_...`. Keys are shown
        exactly once at creation and can be revoked at any time.

````