Get Manufacturing Order
GET/api/manufacturing/manufacturing-orders/:id
Return the full Manufacturing Order with its BOM, component/output lines, operations, warehouses, and events.
manufacturing:readGrant this scope to your token under Settings → Developer → Personal Access Tokens.
BOM line counts (P5/P6): The nested bom object includes component_lines_count, output_lines_count, and operations_count (eager-loaded via withCount). For draft MOs — which have no materialised component_lines/output_lines/operations rows yet (those are created by ConfirmMoAction) — clients should fall back to these BOM counts when rendering tab badges and the footer summary so the user sees what the MO will contain once confirmed.
Once production has been recorded, cost_breakdown is populated with cumulative cost categories: materials, labor, overhead, fixed (flat per-run operation costs — never marked up by overhead), service_fee, landed_cost (outsourced orders only), total, allocation_method, recorded_at, and per-output allocation rows in outputs[]. It is null until the first production record.
Each component_lines[] row carries consumption_method (forward_flush | backflush) — snapshotted from the BOM at confirmation — and each operations[] row carries fixed_cost plus cost_source (none | actual | estimated | manual) — the provenance of its actual_cost: estimated flags a cost that fell back to the planned duration because no time was logged, and manual marks an explicitly supplied cost that is never auto-recalculated (only another explicit cost, or an explicitly logged positive time, replaces it).
Outsourced cost basis: outsourced_cost_basis is the order's explicit override (toll | hybrid, null = inherit) and resolved_outsourced_cost_basis is the basis actually used for costing (override, else the contractor's default_outsourced_cost_basis, else hybrid). resolved_outsourced_cost_basis is null for in-house orders. The nested contractor_supplier object also carries the contractor's default_outsourced_cost_basis.
Request
Responses
- 200
- 401
- 403
- 404
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Not found — no record with the given identifier (or the route does not exist). Verify the ID before retrying.
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.