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

> ## Agent Instructions
> To use Maglev from an agent, connect the MCP server at https://trymaglev.com/mcp. Parts catalog tools need no key. Make tools (make_start, check_manufacturability, get_quotes, place_order) need a Maglev key; see https://trymaglev.com/docs/quickstart.
> Never place an order without showing the person the exact final total and getting their explicit approval.

# Make parts from CAD: STEP file to quotes and orders

> Upload STEP files to the Maglev REST API, get each part routed to CNC, sheet metal, molding or harness shops, compare live quotes and place approved orders.

The Make API takes a folder of CAD files to real quotes in four calls. Maglev reads each part's geometry, decides how it should be made and sends it to a shop that makes it:

| Process | Shops asked | Quote |
| - | - | - |
| CNC machining | [Make Parts Now](https://makepartsnow.com), plus Justway, PCBWay, SendCutSend, Protolabs, Craftcloud, RivCut, Weerg and others through the [Agentic Fabrication Network](https://agenticfabricationnetwork.ai) | Live prices and dates, one offer per shop |
| Sheet metal | [RMFG](https://www.rmfg.com), plus SendCutSend, Justway, PCBWay, Protolabs and others through the Agentic Fabrication Network | Live prices and dates, one offer per shop |
| Injection molding | [SSG MFG](https://ssgmfg.com) | Budgetary estimate including tooling |
| Wire harness | [MiniProto](https://www.miniproto.com) | Live price |

Which shops answer depends on the part; a shop that can't make it simply doesn't return an offer.

Agents that speak MCP get the same four steps as tools at `https://trymaglev.com/mcp` (see [MCP server](/docs/mcp/overview.md)). This page uses plain HTTP.

## 1. Get a key

Log in or sign up at [trymaglev.com/dashboard](https://trymaglev.com/dashboard#keys), open **API keys** in the sidebar, and choose **Create secret key**. Name the key; it is shown once, with a Copy button, and the dashboard checks it against `GET /api/v1/me` right away. Keep it in your environment or a secret manager:

```bash theme={null}
export MAGLEV_KEY=mgl_…
```

Keys from **Connect agent** (saved in `~/.maglev/token`) work the same way. Check a key with:

```bash theme={null}
curl https://trymaglev.com/api/v1/me -H "Authorization: Bearer $MAGLEV_KEY"
```

## 2. Upload each file

Send a STEP file (`.step`, `.stp`) or a wire harness spec (`.json`), up to 20 MB each. Files are kept for 7 days.

```bash theme={null}
curl https://trymaglev.com/api/v1/files \
  -H "Authorization: Bearer $MAGLEV_KEY" \
  -F "file=@base_bracket.step"
```

```json theme={null}
{
 "file_id": "f_8c41…",
 "name": "base_bracket.step",
 "bbox_mm": [80, 40, 40],
 "suggested_process": "sheet_metal",
 "route_reason": "bent sheet: 2 mm thick, R2 inside bend radius"
}
```

The route comes from the part's own geometry, not its file name. See [how routing works](#how-routing-works).

## 3. Check that each part can be made

```bash theme={null}
curl https://trymaglev.com/api/v1/check \
  -H "Authorization: Bearer $MAGLEV_KEY" \
  -H "Content-Type: application/json" \
  -d '{"file_ids": ["f_8c41…", "f_2be0…"]}'
```

Each file comes back with its `process`, `shop`, `routed_because` and any `issues`. A `blocker` issue must be fixed before quoting. `ready_to_quote` is `true` when every file is clear.

## 4. Get quotes from every shop

```bash theme={null}
curl https://trymaglev.com/api/v1/quotes \
  -H "Authorization: Bearer $MAGLEV_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: robot-joint-qty10" \
  -d '{"file_ids": ["f_8c41…", "f_2be0…"], "quantity": 10, "sort": "price"}'
```

Every shop that makes each part's process is asked in parallel, and every offer comes back, sorted by your `sort` (`price` or `lead_time`). A four-part request usually answers in 10 to 20 seconds.

```json theme={null}
{
 "request_id": "rq_dd60…",
 "parts": [
  { "file": "joint_housing.step", "process": "cnc_machining",
    "offers": [
     { "quote_id": "mq_…", "shop": { "name": "Justway", "country": "CN", "via": "AFN" }, "price_type": "firm", "total_usd": 226.35, "arrives_by": "2026-11-20" },
     { "quote_id": "mq_…", "shop": { "name": "PCBWay", "country": "CN", "via": "AFN" }, "price_type": "firm", "total_usd": 257.08, "arrives_by": "2026-11-23" },
     { "quote_id": "mq_…", "shop": { "name": "Make Parts Now", "country": "US" }, "price_type": "firm", "total_usd": 543.07, "ships_by": "2026-11-19" }
    ] },
  { "file": "base_bracket.step", "process": "sheet_metal",
    "offers": [
     { "quote_id": "mq_…", "shop": { "name": "SendCutSend", "country": "US", "via": "AFN" }, "price_type": "firm", "total_usd": 40.5, "arrives_by": "2026-11-16" },
     { "quote_id": "mq_…", "shop": { "name": "RMFG", "country": "US" }, "price_type": "firm", "total_usd": 77, "ships_by": "2026-11-15" }
    ] }
 ]
}
```

These are real prices from the robot-joint example on November 9, 2026 (shortened; that run returned 12 CNC offers and 7 sheet-metal offers). Show the person every offer; Maglev doesn't pick a winner. Molding totals include the one-time mold cost, listed in `one_time_costs`. Field details are in the [reference](/docs/api-reference/make-api.md).

## 5. Order, with a person's approval

Ordering takes two calls, so nothing is ever bought without a person seeing the exact total.

First, ask for the final total. Nothing is charged:

```bash theme={null}
curl https://trymaglev.com/api/v1/orders \
  -H "Authorization: Bearer $MAGLEV_KEY" \
  -H "Content-Type: application/json" \
  -d '{"quote_id": "mq_8e95…"}'
```

```json theme={null}
{ "status": "needs_approval", "charged": false, "final_total_usd": 77, "ask_human": "Charge $77 to Maglev's card on file at RMFG for 10 × base_bracket.step?" }
```

Show `ask_human` to a person. When they approve, send the same total back with a note saying who approved it:

```bash theme={null}
curl https://trymaglev.com/api/v1/orders \
  -H "Authorization: Bearer $MAGLEV_KEY" \
  -H "Content-Type: application/json" \
  -d '{"quote_id": "mq_8e95…", "approved_total_usd": 77, "approval_note": "Approved by Ada in chat, 2026-11-09"}'
```

If the total changed, the call returns `needs_approval` again with the new total. Ordering the same quote twice returns the first order.

What happens next depends on the shop:

| Shop | After approval |
| - | - |
| RMFG | Paid with Maglev's card on file. Returns `ordered` with an order link |
| Make Parts Now | Returns `checkout_created` with a checkout link for the ship-to address and payment |
| MiniProto | Returns `checkout_created` with the saved design to pay for |
| SSG MFG | Sends the request for quote. Returns `rfq_sent`; their team replies with a firm quote |

## How routing works

Maglev reads the surfaces in the STEP file:

* **Sheet metal:** bends (two cylinders on one axis whose radii differ by a sheet thickness) and the same thickness everywhere.
* **Injection molding:** drafted walls, meaning tapered side faces on a part with no bends.
* **CNC machining:** any other solid, such as blocks with pockets, bores and holes.

Harness specs (`.json`) go to wire harness. If the geometry can't decide, the file name is used. To choose yourself, pass `processes` to `check` or `quotes`:

```json theme={null}
{ "file_ids": ["f_8c41…"], "processes": { "f_8c41…": "cnc_machining" } }
```

## Track everything

`GET /api/v1/requests` lists your requests, newest first, each part with every offer and its order status. The same history is on your [dashboard](https://trymaglev.com/dashboard), where each part's offers are laid out in a comparison table.

## Teams

On the dashboard, **Members → Invite people** adds teammates to your workspace by email. Everyone in a workspace sees the same requests, offers, orders and usage. API keys stay personal: each person creates their own, and a revoked key affects only its owner.

The full list of endpoints and fields is in the [Make API reference](/docs/api-reference/make-api.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.