These docs describe the reference manufacturing API at sinter.systems. A sinter.ac subscription covers the project-planning workspace; manufacturing API access is separate.
Quickstart
1. Get an API key
- Dashboard → API keys → Create. The key is shown once.
- A device login: the agent starts it, the user approves a code at
https://sinter.systems/device, the agent receives the key.
Keep the key in the environment
export SINTER_API_KEY=sk_sinter_...
export BASE=https://sinter.systems
export AUTH="Authorization: Bearer $SINTER_API_KEY"
curl -sS "$BASE/v1/me" -H "$AUTH"2. Upload a model
curl -sS -X POST "$BASE/v1/quotes" -H "$AUTH" \
-H "Idempotency-Key: bracket-v3-x10" \
-F [email protected] -F material=PETG -F quantity=10202: status received, or quoted at once
{
"object": "quote",
"id": "ord_...",
"status": "received",
"progress": { "stage": "queued", "fraction": 0, "ahead": 0 },
...
}| Field | Value |
|---|---|
file | STEP, STL, OBJ or 3MF, up to 50 MB. Required. |
material | PLA+, PLA-CF, PETG, PETG-CF, ASA, ASA-CF, PC, PC-CF, TPU, TPU-CF, Nylon, Nylon-CF, PPA-CF, PPS-CF or Custom. Default PLA+. |
material_note | Custom only: the material wanted. Required for Custom. |
quantity | 1 to 100. Default 1. |
units | mm, cm or in. STL and OBJ only. Default mm. |
3. Wait for the quote
Until status is quoted, needs_review, engineering or failed, poll every 5 to 10 seconds.
curl -sS "$BASE/v1/quotes/ord_..." -H "$AUTH"200
{
"object": "quote",
"id": "ord_...",
"status": "quoted",
"flags": [],
"options": [
{ "speed": "asap", "label": "Default", "days": null,
"ship_by": 1791701999, "total_cents": 18450, "unit_cents": 1845,
"currency": "USD", "available": true, "note": null },
{ "speed": "week", "label": "Economy", "days": null, "asap_offset_days": 7,
"ship_by": 1792306799, "total_cents": 14760, "unit_cents": 1476,
"currency": "USD", "available": true, "note": null }
],
"review_url": "https://sinter.systems/q/...",
...
}Read flags before proceeding: manufacturability findings can include warnings on a quoted part. Also check statuses and errors.
4. Price delivery
Every order needs a delivery price before it can be paid.
curl -sS -X POST "$BASE/v1/quotes/ord_.../delivery" -H "$AUTH" \
-H "Content-Type: application/json" \
-d '{"name": "Jane Doe", "phone": "4155550100", "street": "1 Market St",
"city": "San Francisco", "state": "CA", "zip": "94105"}'| Response | Meaning |
|---|---|
| 200 | The quote, with delivery: method, city, fee_cents. |
| 422 | carrier_shipping_available: outside the courier area. Ask the user; if they choose carrier shipping, send the address again with "accept_carrier": true. Other codes: Delivery codes. |
5. Accept
A purchase. Needs a key with the purchase scope, which the account owner grants by turning on Allow purchases, and the user’s approval of this purchase: price, quantity, material and ship date. See Rules for agents.
curl -sS -X POST "$BASE/v1/quotes/ord_.../accept" -H "$AUTH" \
-H "Idempotency-Key: accept-ord_...-week" \
-H "Content-Type: application/json" \
-d '{"speed": "week"}'| Response | Meaning |
|---|---|
| 402 | payment_required. Every order is paid by card first. Give checkout_url to the user. Poll the quote every 30 s or slower until status is accepted. |
| 200 | Already paid: the order. |
| 403 | No purchase scope. |
| 409 | Expired, held for review, the option is no longer available, or delivery not priced. ship_date_changed: show the user the new ship_by; accept again only if they agree. |
| 428 | No Idempotency-Key. |
6. Track
The order id is the quote id.
curl -sS "$BASE/v1/orders/ord_..." -H "$AUTH"200
{
"object": "order",
"id": "ord_...",
"status": "in_production",
"ship_by": 1792306799,
"parts": [ { "unit": 1, "status": "printing", "progress": 0.42 }, ... ],
"tracking": null,
...
}