The Quote object
Saved prices, destination and shipping options, valid for 30 minutes.
Fields
id string · required
Server-generated public quote ID: quote_ plus 32 lowercase hexadecimal digits representing an opaque random value. Immutable and opaque; not a storage path or content hash.
Min length: 38 · Max length: 38
created_at string (date-time) · required
Creation time in UTC RFC 3339 with six fractional-second digits (microseconds).
expires_at string (date-time) · required
Last time this quote may be accepted: exactly 30 minutes after created_at. Covers manufacturing prices and all offered shipping charges. Reading the quote never extends this deadline. UTC RFC 3339 with six fractional-second digits (microseconds).
currency string · required
Literal usd. All monetary fields are USD cents.
Always: "usd"
items array · required
Priced items, merged by model and print size, in first-appearance order.
shipping_address object · required
Saved US recipient address. New quotes return a five-digit ZIP code.
shipping_address fields
name string · required
Delivery recipient; may differ from the buyer.
Min length: 1 · Max length: 255
company string · optional
Optional recipient company.
Min length: 1 · Max length: 255
line1 string · required
Street address.
Min length: 1 · Max length: 200
line2 string · optional
Optional apartment, suite, or additional address line.
Min length: 1 · Max length: 200
city string · required
Destination city/locality.
Min length: 1 · Max length: 100
state string · required
Supported two-letter US state or territory code, or AA/AE/AP military region.
Min length: 1 · Max length: 2
postal_code string · required
Five-digit ZIP code on new quotes. Older saved snapshots may retain ZIP+4.
Min length: 1 · Max length: 10
country string · required
Literal US.
Always: "US"
Min length: 1 · Max length: 2
phone string · optional
Recipient contact; required where the selected carrier/service requires it.
Min length: 1 · Max length: 50
email string (email) · optional
Min length: 1 · Max length: 254
buyer object · optional
Optional buyer details, separate from the delivery recipient. The authenticated account owns the quote and order.
buyer fields
name string · optional
Buyer name.
Min length: 1 · Max length: 255
company string · optional
Buyer company.
Min length: 1 · Max length: 255
email string (email) · optional
Min length: 1 · Max length: 254
estimated_production_business_days object | null · required
Currently null: no production estimate is available.
estimated_production_business_days fields
At least one of these conditions applies:
object
min integer · required
Minimum: 0
max integer · required
Minimum: 0
null
null
shipping_options array · required
At most one option per estimated transit day: keep the cheapest carrier service. For ranges, group by maximum transit business days. Omit slower options that cost as much or more than a faster option. Ties select a service deterministically. Options remain ordered by shipping price; transit estimates are not guaranteed.
shipping_options item fields
id string · required
Opaque service-generated ID for an option within a particular quote. Not a carrier rate ID. Cannot be transferred to another quote.
name string · required
Customer-facing shipping service label.
Min length: 1
carrier string · optional
Optional carrier name, when a carrier is committed for this option.
Min length: 1
totals object · required
Manufacturing and shipping charges in integer minor currency units. Total excludes tax.
totals fields
subtotal integer · required
Sum of model line subtotals, excluding shipping and tax. Integer minor currency units.
Minimum: 0
shipping integer · required
Carrier rate for the estimated parcel, including its packing weight. No general free-shipping credit; an account-specific arrangement can price one service at 0. Integer minor currency units (for USD, cents).
Minimum: 0
total integer · required
Amount to review before ordering: subtotal + shipping. Tax is excluded in V1. Integer minor currency units (for USD, cents).
Minimum: 0
estimated_transit_business_days object | null · required
Carrier transit days when supplied; otherwise the supported service estimate. Starts at handoff, excludes production, and is not guaranteed.
estimated_transit_business_days fields
At least one of these conditions applies:
object
min integer · required
Minimum: 0
max integer · required
Minimum: 0
null
null
estimated_delivery object | null · required
Currently null because production timing is not available. Carrier transit alone is not an arrival-date promise.
estimated_delivery fields
At least one of these conditions applies:
object
earliest string (date) · required
latest string (date) · required
null
null
pricing_version string · required
Opaque identifier for the pricing schedule used. Store it for reference; do not parse it or calculate prices from it. A calculation does not lock prices; review a quote before ordering. Business pricing versions change at calendar-month boundaries; unaccepted quotes then require refreshing.
status string · required
Derived at response time: open before expires_at, expired at or after it. Recomputed on GET; an idempotent replay returns the original status. Commercial snapshot fields never change. It describes expiry only, not order or payment status.
Allowed values: open, expired
Returned by
Example
JSON
{
"id": "quote_6c82bd3e319b4bb099310d54a761879e",
"created_at": "2026-09-17T18:00:00.000000Z",
"expires_at": "2026-09-17T18:30:00.000000Z",
"currency": "usd",
"items": [
{
"model_id": "MD-739YQ549",
"longest_dimension_mm": 100,
"quantity": 2,
"dimensions_mm": {
"x": 100,
"y": 50,
"z": 20
},
"unit_price": 2460,
"subtotal": 4920,
"repair": {
"required": false,
"applied": false,
"reason": null,
"status": "not_applied",
"fee": 0,
"covered_by_order_id": null
}
}
],
"shipping_address": {
"name": "Test Recipient",
"line1": "123 EXAMPLE ST",
"city": "SEATTLE",
"state": "WA",
"postal_code": "98101",
"country": "US"
},
"buyer": {
"company": "Example Store",
"email": "orders@example.com"
},
"estimated_production_business_days": null,
"shipping_options": [
{
"id": "shipopt_6c82bd3e319b4bb099310d54a761879e",
"name": "UPS Ground",
"totals": {
"subtotal": 4920,
"shipping": 1000,
"total": 5920
},
"estimated_transit_business_days": {
"min": 3,
"max": 3
},
"estimated_delivery": null,
"carrier": "UPS"
},
{
"id": "shipopt_8c1f25d94e3142f8b9a70635d42c81e0",
"name": "USPS Priority Mail Express",
"totals": {
"subtotal": 4920,
"shipping": 2000,
"total": 6920
},
"estimated_transit_business_days": {
"min": 1,
"max": 1
},
"estimated_delivery": null,
"carrier": "USPS"
}
],
"pricing_version": "pv_20261001_model_repair_01",
"status": "open"
}API v1 preview