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

# Simulate fulfillment-order generation (bulk)

> Dry-run fulfillment-order generation for up to **50** sales orders at once. Read-only —
no database writes and no inventory allocation take place. Returns, per order, which
fulfillment orders *would* be generated and whether stock shortages would occur.

For a single order you can use `POST /sales-orders/{salesOrderId}/simulate-fulfillment`,
which returns the same shape.




## OpenAPI

````yaml /api-reference/build.yaml post /fulfillment-orders/simulate
openapi: 3.0.0
info:
  title: Luminous API
  version: 1.0.0
  description: API documentation for Luminous
servers:
  - url: https://{companyName}.api.joinluminous.com/external/api/v1
    variables:
      companyName:
        default: companyName
        description: Your company-specific subdomain
security: []
tags:
  - name: Products
    description: Get and manage products
  - name: Pricing
    description: Manage price schedules, levels, and customizations
  - name: BOMs
    description: Manage Bills of Materials (BOMs)
  - name: Labels
    description: Label rendering via Labelary ZPL service
  - name: Companies
    description: Manage business accounts and their associated data
  - name: Contacts
    description: Manage contact information for individuals
  - name: Suppliers
    description: Manage suppliers (factories) — vendors used on purchase orders
  - name: Supplier SKUs
    description: Manage per-supplier SKU and unit-cost overrides for products
  - name: Locations
    description: Manage warehouses and locations
  - name: Inventory
    description: Get and adjust product stock levels
  - name: Lots
    description: Create, update, and delete product lots (batches)
  - name: Transfer Orders
    description: Manage transfer orders
  - name: Fulfillment Orders
    description: Manage fulfillment orders and picklists
  - name: Fulfillment Priority Lists
    description: Configure fulfillment routing priority lists
  - name: Purchase Orders
    description: Get and modify purchase orders
  - name: Supplier Portal
    description: >-
      Read a supplier's response to a purchase order and control the one-click
      portal link
  - name: Receiving Reports
    description: Manage receiving reports
  - name: Payment Obligations
    description: Manage payment obligations for purchase orders
  - name: Sales Orders
    description: Manage sales orders and sales order shipments
  - name: Purgatory
    description: >-
      Inspect and resolve non-posted sales orders in the purgatory staging
      workflow
  - name: PickFlow Shipping
    description: >-
      Provider-agnostic shipping rates, services, packages, and label purchase
      for PickFlow
  - name: Cycle Counts
    description: >-
      Create, drive, and post PickFlow cycle counts — batches, per-warehouse
      sessions, and CSV import/export
  - name: Print Stations
    description: List paired print stations and enqueue print jobs to them
  - name: Invoices
    description: Get and manage invoices
  - name: Work Orders
    description: >-
      Manage work orders — production lifecycle, steps, materials, links,
      shipments, and comments
  - name: Production Batches
    description: Group and manage work orders as production batches
  - name: Bills
    description: >-
      Accounts payable bill management, payments, attachments, allocations, and
      variance
  - name: Prepayments
    description: Manage vendor prepayments and applications
  - name: Vendor Credits
    description: Manage vendor credits and applications
  - name: Vendor Returns
    description: Manage vendor returns and credit generation
  - name: Customer Returns
    description: Manage customer returns (sales returns), receiving, and restock behavior
  - name: Stock Snapshot
    description: Point-in-time stock snapshots with export support
  - name: Consumption
    description: Consumption reports and exports
  - name: Inventory Aging
    description: Cost-layer-based inventory aging reports
  - name: Bills Reports
    description: Accounts payable bills aging reports
  - name: Forecast
    description: Materialized forecast data
  - name: Reports
    description: Close the books, inventory discrepancy, transaction COGS, and EDI reports
  - name: Tags
    description: Add/remove tags across various resources
  - name: Custom Fields
    description: Get and set custom fields across various resources
  - name: Currency
    description: Currency configuration, exchange rates, and conversion
  - name: Integration Mappings
    description: Manage integration mappings for external systems
  - name: Integration Field Mappings
    description: Manage field-level mappings between Luminous and external systems
paths:
  /fulfillment-orders/simulate:
    post:
      tags:
        - Fulfillment Orders
      summary: Simulate fulfillment-order generation (bulk)
      description: >
        Dry-run fulfillment-order generation for up to **50** sales orders at
        once. Read-only —

        no database writes and no inventory allocation take place. Returns, per
        order, which

        fulfillment orders *would* be generated and whether stock shortages
        would occur.


        For a single order you can use `POST
        /sales-orders/{salesOrderId}/simulate-fulfillment`,

        which returns the same shape.
      operationId: simulateFulfillmentOrders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - sales_order_ids
              properties:
                sales_order_ids:
                  type: array
                  description: Sales order IDs to simulate (1–50).
                  minItems: 1
                  maxItems: 50
                  items:
                    type: integer
                    minimum: 1
                  example:
                    - 12345
                    - 12346
                skip_status_check:
                  type: boolean
                  default: true
                  description: When true (default), skip the sales order status gate.
      responses:
        '200':
          description: Simulation completed
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    description: Result of a dry-run fulfillment-order simulation.
                    properties:
                      results:
                        type: array
                        description: One entry per simulated sales order.
                        items:
                          type: object
                          properties:
                            sales_order_id:
                              type: integer
                              example: 12345
                            order_number:
                              type: string
                              nullable: true
                              example: SO-1001
                            channel_id:
                              type: integer
                              nullable: true
                            channel_name:
                              type: string
                              nullable: true
                            status:
                              type: string
                              description: >
                                Outcome for this order:

                                - `SUCCESS` — one or more fulfillment orders
                                would be generated

                                - `NO_STOCK` — nothing could be generated due to
                                insufficient stock

                                - `ERROR` — the order was not found, is
                                inactive, or an error occurred
                              enum:
                                - SUCCESS
                                - NO_STOCK
                                - ERROR
                            message:
                              type: string
                              example: 1 Fulfillment Order(s) would be generated.
                            simulated:
                              type: boolean
                              example: true
                            simulated_fulfillment_orders:
                              type: array
                              description: >-
                                The fulfillment orders that would be created
                                (not persisted).
                              items:
                                type: object
                                additionalProperties: true
                            has_shortages:
                              type: boolean
                            shortage_items:
                              type: array
                              items:
                                type: object
                                additionalProperties: true
                            detailed_decisions:
                              type: array
                              description: >-
                                Per-line routing / allocation decisions made
                                during the simulation.
                              items:
                                type: object
                                additionalProperties: true
                      summary:
                        type: object
                        properties:
                          total_orders_simulated:
                            type: integer
                            example: 1
                          orders_with_fos:
                            type: integer
                            description: Count of orders with status `SUCCESS`.
                            example: 1
                          orders_without_stock:
                            type: integer
                            description: Count of orders with status `NO_STOCK`.
                            example: 0
                          orders_with_errors:
                            type: integer
                            description: Count of orders with status `ERROR`.
                            example: 0
                          total_simulated_fulfillment_orders:
                            type: integer
                            description: >-
                              Total fulfillment orders that would be generated
                              across all orders.
                            example: 1
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
        '422':
          description: Validation error (e.g. more than 50 IDs, or a non-integer ID)
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
      security:
        - BearerAuth: []
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Authenticate using a bearer token. To create a token, navigate to
        /settings/api-tokens and click Create API Token.

````