https://trymaglev.com/api/v1
Every call needs Authorization: Bearer mgl_…. Create a key on the dashboard (API keys → Create secret key). Keys are personal; requests made with them show up in every workspace you belong to. Requests and responses are JSON, except file upload, which is multipart/form-data. /api/make/* is an alias for the same endpoints.
Endpoints
POST /files
Form fieldfile. Accepts .step, .stp (CAD) and .json (wire harness spec). Up to 20 MB. Kept 7 days.
Returns
201.
POST /check
Response:
ready_to_quote (boolean) and files[], each with process, routed_because, ok and issues[] (severity is blocker or warning).
POST /quotes
Every shop that makes a part’s process is asked in parallel: for CNC and sheet metal that is around 10 shops in the US, China and Europe (directly and through the Agentic Fabrication Network); molding goes to SSG MFG and harnesses to MiniProto. Typical time is 10 to 20 seconds. Returns
201:
A value the shop didn’t give is
null, never a guess. A shop that fails doesn’t fail the call: its offer has ok: false and an error. Offers are kept 7 days.
POST /orders
Without
approved_total_usd, or if it doesn’t match the final total, nothing happens. The response is needs_approval with final_total_usd and an ask_human sentence to show a person.
Ordering the same offer again returns the existing order with
already_ordered: true.
Retries and idempotency
SendIdempotency-Key: <any unique string> on any POST. Repeating the call with the same key and body within 24 hours returns the first response again (header Idempotent-Replayed: true) instead of quoting or ordering twice. The same key with a different body returns 422 idempotency_conflict.
Errors
Every response carries anX-Request-Id header. Errors use HTTP status codes and one shape: