Create Manual MO Operation
POST/api/manufacturing/manufacturing-orders/:manufacturingOrder/operations
Create a manual operation against a specific MO. The new row is stamped source='manual' with bom_operation_id=null.
manufacturing:writeGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Body fields:
sequence(required, integer, min 0) — ordering on the MO; can interleave with from_bom rowsname(required, string, max 255)type(required, enum) — one of: process, setup, per_unit, fixed_cost. Stored on the row as operation_type.work_center_id(optional, integer, exists:work_centers,id)default_operator_id(optional, integer, exists:users,id) — planned operator (distinct from operator_id which is set when the timer starts)expected_duration_minutes(optional, integer, min 0)hourly_rate(optional, numeric, min 0)fixed_cost(optional, numeric, min 0) — flat per-run cost added on top of labour for any operation type (or the entire cost of a fixed_cost operation). Capitalized onto finished goods like labour, but never marked up by work-center overhead.notes(optional, string, max 1000)
Refused with 422 {code:'mo_locked'} when MO status is completed | closed | cancelled.
cost_classification (optional, labor|overhead, default labor) sets the expense classification independently of the rate basis: labor posts the operation's variable cost to the Labor bucket (marked up by the work center's overhead %); overhead posts machine/tooling-style cost to the Overhead bucket with no additional markup.
Request
Responses
- 201
- 401
- 403
- 404
- 422
- 429
Created
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.
Unprocessable Entity
Response Headers
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.