ℹ️ Use this guide if your integration with the Luminovo API (for example from your ERP) calls the Costed BOM endpoint and you need to move to the new endpoints. For supplier API integrations (live prices and stock), see Activate direct API integrations to your suppliers.
What's changing
The Get Costed BOM endpoint is now deprecated:
GET /rfqs/{id}/costed-bomGET /projects/{id}/costed-bom
(Both return the same data – in Luminovo, a project and an RfQ are the same thing.)
The Costed BOM endpoint was originally built to mirror Luminovo's Excel costed-BOM export one-to-one in a single API call. That made the response very large and slow to generate for bigger BOMs, and harder to integrate against reliably.
We've replaced it with a set of smaller, focused endpoints. Each one returns a single, well-defined piece of the picture – projects, sourcing scenarios, purchase options, offers, and component data – so your integration is faster, more predictable, and easier to maintain.
Timeline: The Costed BOM endpoint still works today, but it will not receive further improvements. Please plan to migrate by January 1, 2027.
Some BOM-line data is not yet available from the new endpoints (see Not yet available below). If your integration depends on it, please contact your Customer Success Manager before you start migrating.
The new endpoints
The endpoints below cover projects, part data, offers, purchase options and costs. Some data from the Costed BOM, mainly part numbers and notes per BOM line, is not available yet – see Not yet available.
Available today
Endpoint | Method & path |
|
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
*Get part returns the full master data of one off-the-shelf part: manufacturer, MPN, description, technical properties, package, compliance, and lifecycle. To fetch many parts in one call, use POST /off-the-shelf-parts/bulk.
**Get BOM tree returns the assembly IDs of a project only. Designators and per-assembly quantities for each BOM item come from Get cost breakdown.
💡 Assembly-level cost totals (material, manufacturing, and additional costs, plus whether the cost is frozen) come from Get calculated assembly cost. For the sourcing costs of a sourcing scenario broken down per assembly and per BOM item, use Get cost breakdown. It lists each assembly's own costs and the costs rolled up from its sub-assemblies, and for each BOM item its designators, per-assembly quantity, sourcing status and selected offers.
How the old data maps to the new endpoints
The Costed BOM combined four kinds of information. Here's where each now lives:
In the Costed BOM | Now available from |
BOM structure – projects, assemblies, designators, quantities | Get all projects · Get a project · Get BOM tree (assembly IDs) · Get cost breakdown (designators and quantities per BOM item) |
Part & component data* – MPN, manufacturer, description, compliance, lifecycle of the selected part; IPNs in your component library | Get component by IPN · List components · Get part |
Sourcing & pricing – offers, selected purchase options, supplier, unit price, MOQ/MPQ, availability | Get purchase options · Find offers · Get an offer · Get offers |
Cost summaries – per-assembly unit/total cost | Get calculated assembly cost · Get cost breakdown |
*Part numbers per BOM line (IPN, CPN) are not available yet.
Not yet available
The following Costed BOM data has no replacement in the public API yet. We’re working on closing these gaps. If you rely on any of them, please contact your Customer Success Manager.
Costed BOM data | Status in the new endpoints |
Part numbers as written on the BOM line: IPN, CPN, MPN, and the IPN description | Not yet available. Offers return the IPN only for inventory and ERP offers; distributor offers return the selected part’s MPN. |
BOM line notes and the “manufacturer free” flag | Not yet available |
Part options per BOM line (approved and pending parts) | Not yet available |
Assembly type and assembly notes | Not yet available |
Consignment | Partial: shown as |
Sourcing scenario settings (lead-time preference, preferred and approved suppliers, excess preference, offer age limits, packaging, inventory sites) | Not yet available. Get a sourcing scenario returns currency settings only. |
Alternative solutions (valid, warning and error solutions), solution and part warnings, sourcing notes | Not yet available. Only the selected offer is returned. |
Offer origin (for example distributor API, quote request, import, manual) | Not yet available |
Shipping time in days; scrap and excess quantities | Not yet available. Scrap and excess are returned as costs, not quantities. |
Migrating by use case
1. Create internal part numbers (IPNs) for parts that don't have one yet
Goal: For parts that don't yet have an internal part number in your ERP, create the IPN using Luminovo's part data.
Pull your component library from Luminovo:
List components (
GET /components) returns a paginated list of every component in your tenant – page through until you've read them all.Get the list of all MPNs connected to your IPNs.
Pull the purchase options for the sourcing scenario (
GET /sourcing-scenarios/{id}/purchase-options) and pull the corresponding offers with theiroffer_idvalues (GET /offers/{id}for one offer, orPOST /offers/bulkfor many in one call).Extract the MPN and the manufacturer from the offer data.
Compare the data from 2(a) to the data from 1(b). If the MPN is not part of any IPN, use the MPN data to create a new part in your ERP system.
:::callout backgroundColor="#feedaf80" borderColor="#fbc91633"
⚠️ The MPN comes from the selected offer, not from the BOM line, so it may differ from the MPN written on the BOM. One MPN can also be linked to several IPNs in your component library. Review those cases manually instead of writing them to your ERP automatically.
:::
2. Update prices for parts using Luminovo data
Goal: Refresh the prices in your ERP with Luminovo's current offer data.
Gather the part IDs you want priced. You'll find these on your components (from List components or Get component by IPN – the
linked_partscarry their part IDs).Call Find offers (
POST /offers/find) with the part IDs infilters.part_ids, up to 1,000 per request. Each ID needs its kind as a prefix, for exampleOffTheShelf:a1b2c3d4-5678-90ab-cdef-123456789012. Theidof an off-the-shelf part inlinked_partsis the bare UUID, so add theOffTheShelf:prefix yourself.The response is a flat list of
offers. Each offer carries itslinked_part(use it to match the offer to your part), the supplier, availability, and one or moreprice_breaks– each break has aunit_pricesuch as{ "amount": "0.0520", "currency": "EUR" }, plusminimum_order_quantityandminimum_packaging_quantity.The response is paginated: by default it returns up to 100 offers (set
limitto get up to 1,000). Whilepagination.has_moreistrue, call again with the same filters andcursorset topagination.next_cursor.Pick the relevant price and write it back to your ERP.
💡 Want only the prices Luminovo actually selected for a sourcing scenario (rather than all available market offers)? Use Get purchase options (next section) – each selected offer comes with its price.
3. Pre-fill purchase orders using purchase options
Goal: Create purchase orders in your ERP, pre-filled from the purchase options Luminovo selected.
Get all projects (
GET /projects) → find the project.Get a project (
GET /projects/{id}) → the response lists the project's sourcing scenarios; take the sourcing scenario ID you want. (Optional: call Get a sourcing scenario (GET /sourcing-scenarios/{id}) for its demands, currency, and settings.)Get purchase options (
GET /sourcing-scenarios/{id}/purchase-options) → the list of selected offers, ready for PO creation. Each entry includes:quantity– the number of offer units to orderunit_of_measurement– what one offer unit represents (e.g. 1 piece, or 5 m of cable)purchase_quantity– the total in base units (quantity × unit_of_measurement.value)unit_price– the price of one offer unitminimum_order_quantityandminimum_packaging_quantityoffer_id
(Optional) Use the
offer_idwith Get an offer (GET /offers/{id}), or collect them for Get offers (POST /offers/bulk), to pull the full offer – supplier, all price breaks, and availability.Map each purchase option to a PO line in your ERP.
This endpoint's response is designed specifically for ERP systems to create purchase orders.
