3D printing quotes: prices, manufacturers and approval
Display prices and let FRED or your customer choose the manufacturer.
Published by FRED · Updated
Choose the model source
- New file:
POST /v1/storefront/quotes/upload, using multipart. - File already in the account:
POST /v1/storefront/quoteswithfile_id. - Dashboard product: the same JSON request with
product_id.
{
"product_id": "prod_abc123",
"quantity": 2,
"color": "black",
"destination": { "country": "FR", "postal_code": "34000" }
}Send the API key and an Idempotency-Key with each creation request. Without a postal code,
production prices can be compared but no delivered total is shown.
Optional settings
| Field | Default | Use |
|---|---|---|
quantity | 1 | From 1 to 50 identical copies |
material | PLA | Exact ID from GET /v1/materials, for example bambu-pla-matte; PLA remains the legacy alias |
color | auto | Reference to a colour of this material; auto proposes a match for the file's colours |
height_mm | Original size | Proportional resizing, from 5 to 350 mm; may require approval |
destination.country | FR | Delivery country, two-letter code |
destination.postal_code | Absent | Required for a delivered price |
product_variant_id | Default compatible variant | Only for a saved product |
personalization | {} | Fields defined on the saved product |
For multipart uploads, country and postal_code are separate form
fields; the other options use the same names. For several different models,
request a quote for each model. This interface covers one object, one configuration and
one destination at a time.
Exact materials and colours
Call GET /v1/materials with your API key (quotes:read). The response contains
materials, with each range's id, name, role and colors.
Each colour provides id, code, label, hex and hexes (several shades for
a multicolour filament). Only use ranges with role: "model" as the
main material; the others are support filaments.
{
"file_id": "file_abc123",
"material": "bambu-pla-matte",
"color": "bambu-pla-matte:11101",
"quantity": 2,
"destination": { "country": "FR", "postal_code": "34000" }
}A PLA Basic colour cannot be combined with PLA Matte. References are
compared against the manufacturer's exact stock and its price list for that material.
The catalogue does not guarantee that a manufacturer or a qualified profile is available.
Without a compatible offer, the quote remains unavailable: there is no silent substitution
with PLA Basic. With color: "auto", a difference between the file's colours
and the proposed shades may require preview approval.
Legacy requests using material: "PLA" with color: "black" are still accepted. For
a new integration, use catalogue IDs and retain
material and the response's colors with the quote.
Read the response
Each entry in options contains:
| Field | What to display or use |
|---|---|
id | The option_id to retain if you choose this manufacturer |
supplier | Manufacturer ID, name, city and country |
colors | ref references and hex shades of the proposed manufacturing file |
price.production_cents | Manufacturing and preparation for the entire quantity |
price.service_cents | FRED service fees |
price.shipping_cents | Parcel shipping, or null |
price.total_cents | Amount to pay, or null while shipping is missing |
dispatch_hours | Expected time before dispatch, after payment |
transit_hours | Expected transit time, or null |
delivery_hours | Expected overall lead time, or null |
available | This option can be selected now |
reason | Reason for unavailability, if any |
expires_at | End of the price's validity |
estimate_source | slicer after successful slicing |
indicative | The price or terms still need confirmation |
estimation_notice | Explanation to display with the provisional price |
During initial slicing, no provisional price option is published.
The visual preview may already be available, but prices and measurements wait for
successful slicing. Keep reading poll_url while the quote is being calculated.
Only use an option with available: true to order, after completing
any required approvals.
Lead times are estimates, not a capacity reservation.
FRED ranks options according to its recommendation policy: lead time, quality, price
and distance. recommended_option_id identifies the first orderable option.
The cheapest manufacturer is therefore not necessarily the recommended one.
To let FRED choose when ordering, omit option_id. To preserve the choice
made on your website, send it with quote_id. Availability is checked
again before the order is created.
Wait or request approval
Quote status | Action for your website |
|---|---|
processing | Read poll_url every two seconds |
needs_destination | Request the postal code and calculate shipping |
ready | Show available options and allow ordering |
action_required | Display the preview and ask for model approval |
unavailable | Display issues, reason or unavailable_suppliers; do not offer payment |
Get an exact price quickly
A storefront quote becomes ready as soon as an exact, available option can be
ordered. It no longer waits for alternative profiles to finish slicing.
comparison_complete: false means other manufacturers are still being
calculated: you can keep reading poll_url to complete the comparison.
The recommendation may change; send option_id to preserve the choice
shown to your customer.
Slicing measurements are reused for the same account, prepared file, profile, material and palette. A new quantity or destination recalculates prices without slicing the unit again. Prices and availability are still checked for each new quote.
For a store, request a quote for each configuration you will sell before listing it, then wait for the comparison to finish. Customer requests can then reuse those measurements. New geometry, personalisation, size or machine settings may require initial slicing: an exact price within seconds is not guaranteed.
If approval_required is true, show the option's preview to your user,
then call POST /v1/preparations/{preparation_id}/approve with
{"artifact_id":"artifact_abc123"} after their explicit approval. Reload
the quote afterwards. Approval does not replace missing technical qualification.
Preview URLs also require authentication: serve them through your
server without exposing the API key to the browser.
Changing the material, quantity, size, colour or model requires a new quote. An existing quote's price stays fixed; an expired result can no longer be ordered.