Skip to main content
POST
Order a board again

Authorizations

X-API-Key
string
header
required

Your ProvenMetal API key (pm_live_...). Authorization: Bearer <key> also works.

Query Parameters

wait_s
integer
default:30

Seconds to wait for the quote before answering 202 with a request to poll, as POST /v1/quotes.

Required range: 0 <= x <= 150

Body

application/json

Everything the MCP reorder tool takes: an earlier order and only what changes, with the delivery details as one ship_to object (it replaces the earlier delivery whole).

history_token
string
required

From POST /v1/previous-orders.

Maximum string length: 200
order_id
string
required

One of the orders POST /v1/previous-orders listed.

Maximum string length: 80
quantity
integer | null

Only to change it.

Required range: 1 <= x <= 100000
assembly
boolean | null

Only to change it: true for assembled boards, false for bare boards.

upload_id
string | null

Revised design files, from POST /v1/uploads. Left out, the earlier order's files are used.

Maximum string length: 64
board
string | null

Which .kicad_pcb to use when the upload holds more than one.

skip_board_checks
boolean
default:false

true only if the user wants a KiCad board with shorts or unrouted connections built as designed anyway; the quote says so.

layers
integer | null

Only to change it.

thickness_mm
number | null

Board thickness in mm, only when the user or the files state it; otherwise it is asked, or 1.6 mm with standard_for_unstated.

Required range: 0.1 <= x <= 10
surface_finish
enum<string> | null

The finishes JLCPCB's API prices. OSP, ENEPIG and immersion tin or silver aren't among them: they need special_requirements=true, a custom quote.

Available options:
enig,
hasl_lead_free,
hasl
solder_mask
enum<string> | null

The gloss colours JLCPCB's API prices. Green builds fastest: on a small 1-2 layer order any other colour takes JLCPCB about a day longer. A matte mask isn't among them: it needs special_requirements=true, a custom quote.

Available options:
Green,
Red,
Blue,
White,
Black,
Yellow,
Purple,
Transparent
copper_oz
number | null

Outer copper in oz, only when the user or the files state it; otherwise it is asked, or 1 oz with standard_for_unstated.

Required range: 0.1 <= x <= 12
inner_copper_oz
number | null

Inner-layer copper of a 4+ layer board, in oz, only when the user or the design files state it. JLCPCB's standard is 0.5 oz. KiCad's default stackup lists 0.035 mm (1 oz) on every copper layer whether or not anyone chose it, so don't pass 1 from that. Left out, it is asked, or 0.5 oz with standard_for_unstated.

Required range: 0.1 <= x <= 12
material
enum<string> | null

Only when the user or the files state it. Any other laminate is special_requirements=true.

Available options:
FR-4,
FR-4 / TG155,
FR-4 / TG170,
Aluminum,
Copper core,
Rogers 4350B,
ZYF300CA-P,
ZYF300CA-C,
ZYF265D,
ZYF255DA,
Polyimide
via_process
enum<string> | null

Filled or plugged vias, priced instantly, when the user or the files call for them. Blind, buried or micro vias are special_requirements=true.

Available options:
tented,
untented,
plugged,
epoxy_filled_capped,
copper_paste_filled_capped
jlc_options
Jlc Options · object | null

Exact selections from JLCPCB's documented PCB options object (call jlcpcb_capabilities): services (serviceConfigCode, serviceConfigShow, configOptionShow), gold fingers, castellations, electrical test, marking, rails, ENIG gold thickness and flex options; the live quote checks availability and fees. Blind slots need an order-owned image and take a reviewed quote.

ship_to
ShipTo · object | null

Who receives the boards and where. Everything is optional; pass only what the customer gave, never a guess. With name, email, phone, line1, city, postal code and country (and state where couriers need one) the checkout opens with delivery saved. Without a destination the quote is priced for US delivery.

customer_supplied_refs
string[] | null

References of parts the user says they will send (for example U1, L1, Y1), never to get around a review. They stay assembled; the customer ships them to ProvenMetal, 1230 Howard Street, San Francisco (also in the notes and at checkout).

do_not_fit_refs
string[] | null

Whole BOM lines the user says to leave unfitted (for example R21, R24); the reply says they were left off. Never delete or change the user's files to leave a part off. A line the BOM marks do-not-fit, or one with no pick-and-place position (off_board_parts: JLCPCB wouldn't assemble it), comes back asking: pass it here only if the user says so.

substitutions
Substitution · object[] | null

Replaces the earlier order's component changes ([] clears them), only with the customer's explicit approval.

staff_picks_parts
boolean | null

Only to change it.

special_notes
string | null

The user's words for ProvenMetal's team. With special_requirements=true, what is special about the board; with false, notes that don't change it, which reach the team with the order while the price stays instant.

project_name
string | null

A name for the board, shown on the order.

Maximum string length: 200
itar
boolean
default:false

true only if the user says the design is ITAR-controlled: it can't be ordered here.

Response

Successful Response

ok
boolean
required
mode
enum<string>
required

instant: a live price the customer pays at checkout_url. review: ProvenMetal's team quotes it (custom options, or parts that couldn't be priced); the customer requests it at checkout_url.

Available options:
instant,
review
quote_id
string
required

64 hex characters: GET /v1/quotes/{quote_id} reports where it stands.

checkout_url
string
required
quantity
integer
required
request_id
string | null

The quote request that made it.

total
string | null

Total in USD, delivered, with tax (instant). null for review.

per_board
string | null
tax
string | null
currency
string | null

instant: USD.

total_cents
integer | null

instant: the total in cents.

per_board_cents
integer | null
tax_cents
integer | null
lines
Lines · object[] | null

instant: what the total is made of, each {label, cents}.

board_details
Board Details · object | null

instant: the board as priced (layers, width_mm, height_mm, thickness_mm, copper_oz, inner_copper_oz, surface_finish, solder_mask, material).

assembled
boolean | null
lead_time
string | null

Build time.

delivery
string | null

From payment to the door, build included.

faster_builds
Faster Builds · object[] | null

instant: JLCPCB's faster builds for this board, each {build_time_hours, build, adds, delivery}. Offer them before checkout; to take one, quote again with the same body and build_time_hours.

shipping
string | null

instant: the carrier the total ships by.

summary
string | null

With saved_details: the board in one line, for the question asked before paying with saved details.

hs_code
string | null

instant: the customs code the boards are declared under. null for assembled boards nobody gave a code for: JLCPCB classifies them; pass hs_code to set one.

shipping_options
Shipping Options · object[] | null

instant: JLCPCB's other carriers, each {shipping_method, carrier, adds or saves, delivery, duty_on_delivery}. Offer them before checkout; to take one, quote again with the same body and shipping_method.

includes
string[] | null

The total's lines, as words.

in_your_currency
In Your Currency · object | null

instant, outside the U.S. or when currency is given: total, includes and rate in that currency, at the ECB's rate.

running_price
string | null

The price so far and what it covers, in one line: everything (instant), or what is priced and still to come.

board
string | null

The board in one line.

board_image_url
string | null

A PNG of the board.

delivery_saved
boolean | null

Checkout opens with the delivery details already saved.

saved_details
boolean | null

The email in ship_to has a saved card and address: the customer can pay through /saved/code, /saved/verify and /saved/pay after saying yes.

unpriced_parts
Unpriced Parts · object[] | null

review: each part that couldn't be priced, with why and what was searched, and any similar_part to offer.

picked_parts
Picked Parts · object[] | null

staff_picks_parts: the parts ProvenMetal chose.

requested_substitutions
Requested Substitutions · object[] | null
custom_quote_reasons
string[] | null

review: why it needs ProvenMetal's team.

fabrication_quote
Fabrication Quote · object | null

review of an assembly: an instant price for the bare boards alone, with its own checkout_url.

notes
string[] | null
expires_at
string | null
next
string | null

What to do next, in words to relay.