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

# Parts and design checks

> Check a board while it's designed. No quote or order.

The same checks as the MCP's [`parts_check` and `design_check`](/mcp/design-checks). Run them whenever the board changes.

## Parts

A part list and how many boards will be built; no files.

```bash theme={"system"}
curl https://api.provenmetal.com/v1/part-checks \
  -H "X-API-Key: $PROVENMETAL_API_KEY" -H "content-type: application/json" \
  -d '{
    "boards": 50,
    "parts": [
      { "reference": "U1", "quantity": 1, "mpn": "RP2040", "manufacturer": "Raspberry Pi" },
      { "reference": "C1", "quantity": 1, "value": "100nF", "footprint": "0402" },
      { "reference": "J1", "quantity": 1, "lcsc": "C165948" }
    ]
  }'
```

`quantity` is per board. Or send a BOM file's text as `bom_csv` (up to 300 KB, 300 lines).

JLCPCB's stock answers in about two seconds; Digi-Key, Mouser, LCSC and Octopart follow for what JLCPCB lacks, within `wait_s` (0 to 50, default 20). Parts still being looked up come back as `checking` with `retry_after_s` (also the `Retry-After` header): send the same check again then. A list checked in the last ten minutes, or a part looked up in the last twelve hours, answers without asking a supplier again.

| `verdict` | Meaning |
| - | - |
| `ok` | In stock and priced (`stock`, `lead_time_days`, `lifecycle` when known) |
| `check` | Package or identity needs a look; `why` says what |
| `problem` | Can't be bought for this quantity; `why` says what was searched, `similar_part` offers one in stock |
| `checking` | Still being looked up |

`cost_usd` is for the whole build; `summary` has the totals per build and per board.

## Design

Upload the files ([`POST /v1/uploads`](/api-reference/uploads/create-an-upload)), then:

```bash theme={"system"}
curl https://api.provenmetal.com/v1/design-checks \
  -H "X-API-Key: $PROVENMETAL_API_KEY" -H "content-type: application/json" \
  -d '{ "upload_id": "3f2c0b8e9d1a4c6e8f0a1b2c3d4e5f60", "boards": 50 }'
```

| Check | Result |
| - | - |
| JLCPCB's limits | Outline, drills, annular rings, trace and spacing, mask, silkscreen |
| Partner fabs | `can_build`, `cannot_build` or `not_fully_checked` for JLCPCB, PCBWay, Bay Area Circuits and Summit |
| KiCad's design-rule check | Unrouted connections and shorts as `must_fix`; the rest by kind |
| Parts (with `boards`) | As the parts check, plus datasheet, package and footprint checks in `part_checks` on a later call |

`findings` come worst first: `must_fix`, `warning`, `note`. Pass `copper_oz` and `thickness_mm` when the board isn't 1 oz and 1.6 mm.

A large board can take a minute or two. Past about 2.5 minutes the reply is `checking` with the findings so far and `retry_after_s` (also the `Retry-After` header): send the same check again then.

<Warning>
  Fab verdicts are an estimate from each fab's published limits, not the fab's own review. Summit's lead times are not very reliable: plan with margin.
</Warning>

## Board options

[`GET /v1/capabilities`](/api-reference/checks/board-options-and-services) lists JLCPCB's materials, finishes, mask colours, via processes, its 35 documented services and the `jlc_options` a quote takes. A live quote confirms availability and price.


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