Agentic Fabrication Network · Schema
QuoteResponse
Artificial IntelligenceManufacturingFabricationMarketplaceProcurement
Properties
| Name | Type | Description |
|---|---|---|
| quote_id | string | |
| parent_quote_id | stringnull | |
| scenario | string | Comparison-scenario label this quote was refined under (see the refine body's `scenario`). Echoed on every read of a labeled child so pollers can bucket side-by-side offers by scenario. Absent on unla |
| process | string | |
| status | string | Quotes STREAM: "quoting" = the fastest vendors' offers are in this response and more are landing — re-read GET /v1/quotes/{id} (routing.expected_vendors says who is still pricing). "complete" = every |
| offers | array | Ranked best-first (price + speed) — unless an `order_by` applies, in which case they arrive already sorted by it (the echoed order_by says which). |
| order_by | object | The presentation ordering offers[] is currently sorted by (see the refine body's `order_by`), echoed on every read while one applies. Absent = the default recommended (price + speed) rank. |
| steps | array | The last few refine steps behind this quote, NEWEST FIRST (ALC-127) — steps[0] is the step that produced this quote (what undo_last_step takes back). Computed from stored quote states on every read, c |
| near_misses | array | Real bids that missed exactly one hard constraint, closest-first (capped at 6 per response) — shown for context, never mixed into offers[], never orderable as-is |
| routing | object | How the quote was dispatched (always includes expected_vendors; candidates/also_possible reflect auto-routing when `process` was omitted) |
| ufp_url | string | Public download of this quote's .ufp part container: a plain STORE-mode ZIP holding ufp.json (the quote's CURRENT spec + constraints, pretty-printed) and design/ |
| design_url | string | Public download of the bare design file inside that container (the .step/.stl/artwork the network actually quotes) — 'save just the .step' without unzipping. Present alongside ufp_url. |
| notes | array | Why vendors/offers were excluded, vendor outages, etc. |
| created_at | string |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/agenticfabricationnetwork-ai/json-schema/agenticfabricationnetwork-ai-quote-response-schema.json",
"title": "QuoteResponse",
"x-generated": "2026-11-01",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/agenticfabricationnetwork-ai-openapi.json#/components/schemas/QuoteResponse",
"type": "object",
"properties": {
"quote_id": {
"type": "string"
},
"parent_quote_id": {
"type": [
"string",
"null"
]
},
"scenario": {
"type": "string",
"description": "Comparison-scenario label this quote was refined under (see the refine body's `scenario`). Echoed on every read of a labeled child so pollers can bucket side-by-side offers by scenario. Absent on unlabeled quotes."
},
"process": {
"type": "string",
"enum": [
"fdm_print",
"resin_print",
"powder_print",
"metal_print",
"elastomer_print",
"cnc",
"sheetmetal",
"laser_cut",
"decal",
"print",
"apparel"
]
},
"status": {
"type": "string",
"enum": [
"open",
"quoting",
"complete",
"partial",
"expired",
"ordered"
],
"description": "Quotes STREAM: \"quoting\" = the fastest vendors' offers are in this response and more are landing — re-read GET /v1/quotes/{id} (routing.expected_vendors says who is still pricing). \"complete\" = every vendor answered; \"partial\" = some lanes failed or were superseded but every offer shown is real and orderable."
},
"offers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"quote_id": {
"type": "string"
},
"vendor": {
"type": "string"
},
"vendor_display_name": {
"type": "string"
},
"vendor_logo_url": {
"type": "string",
"description": "The vendor's brand mark (small square image URL) for offer cards. Absent when AFN has no curated mark for the vendor — render the name alone, never a placeholder image"
},
"process": {
"type": "string",
"enum": [
"fdm_print",
"resin_print",
"powder_print",
"metal_print",
"elastomer_print",
"cnc",
"sheetmetal",
"laser_cut",
"decal",
"print",
"apparel"
]
},
"spec_resolved": {
"type": "object",
"additionalProperties": true,
"description": "Exact size/cut/material/color the vendor will make"
},
"quantity": {
"type": "integer"
},
"requested_quantity": {
"type": "integer",
"description": "Present when the vendor's minimum order forced quantity above what was requested — e.g. asked for 1, minimum is 25"
},
"substitutions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"requested": {
"type": "string"
},
"provided": {
"type": "string"
}
}
},
"description": "Present when this offer is a closest-match stand-in for an unsupported ask, e.g. {field:\"cut\", requested:\"triangle\", provided:\"contour\"}. The ask is logged for future vendor sourcing."
},
"min_order": {
"type": "object",
"properties": {
"threshold_cents": {
"type": "integer"
},
"detail": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"min_purchase",
"startup_fee"
],
"description": "Which per-order charge shaped the price: \"min_purchase\" (default when absent) = the vendor floors the order value; \"startup_fee\" = a flat per-order fee added to every order and already inside the subtotal (threshold_cents is that fee)."
}
},
"description": "Present when a vendor per-order charge shaped this price — an order-value floor (the subtotal is the vendor's per-order minimum, not a scaled per-part price; floors billed as a cart top-up on the shipping line count too) or a flat per-order startup fee (see kind). threshold_cents is the vendor-side amount in USD cents; detail is the vendor's published wording. Absent = the price scaled from the part."
},
"unit_price_cents": {
"type": "integer",
"description": "All-in unit price (payment-processing gross-up baked in — no separate fee line ever)"
},
"subtotal_cents": {
"type": "integer"
},
"shipping_options": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"label": {
"type": "string"
},
"cost_cents": {
"type": "integer",
"description": "All-in shipping cost, USD cents (payment-processing gross-up baked in; free shipping stays 0)"
},
"eta_date": {
"type": "string",
"format": "date"
},
"eta_business_days": {
"type": "integer"
}
}
}
},
"total_from_cents": {
"type": "integer",
"description": "Subtotal + cheapest shipping"
},
"preview": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"pending",
"ready",
"failed",
"unavailable"
]
},
"url": {
"type": "string",
"format": "uri"
},
"source": {
"type": "string",
"enum": [
"vendor_render",
"ufp_render"
]
}
},
"description": "Product preview for these exact options. Resolves asynchronously — poll GET /v1/quotes/{id}."
},
"attributes": {
"type": "object",
"properties": {
"outdoor_rated": {
"type": "boolean"
},
"submersible": {
"type": "boolean"
},
"high_temp": {
"type": "boolean"
},
"food_safe": {
"type": "boolean"
}
},
"additionalProperties": {
"type": "boolean"
},
"description": "Only vendor-advertised claims appear; an absent flag means \"no claim\", never \"no\". OPEN vocabulary: beyond the named keys, any additional boolean key is a vendor-advertised claim (e.g. iso_13485: true) — same honest-claims rule"
},
"vendor_rating": {
"type": "object",
"properties": {
"stars": {
"type": "number"
},
"review_count": {
"type": "integer",
"description": "Honest count of reviews on file — 0 means no one has reviewed yet"
},
"facets": {
"type": "object",
"properties": {
"quality": {
"type": "number"
},
"timeliness": {
"type": "number"
},
"accuracy": {
"type": "number"
}
},
"description": "Facet averages over reviews that scored them"
},
"reliability": {
"type": "array",
"items": {
"type": "object",
"properties": {
"process": {
"type": "string",
"enum": [
"fdm_print",
"resin_print",
"powder_print",
"metal_print",
"elastomer_print",
"cnc",
"sheetmetal",
"laser_cut",
"decal",
"print",
"apparel"
]
},
"material": {
"type": "string"
},
"orders": {
"type": "integer",
"description": "Honest sample size — completed orders for this process+material"
},
"stars": {
"type": "number"
},
"on_time_rate": {
"type": "number",
"minimum": 0,
"maximum": 1
}
}
},
"description": "Per-process/material track record (\"prints PC reliably\") — filterable via constraints.reliability"
}
},
"description": "Vendor star rating built from verified-purchase reviews only (see POST /v1/orders/{id}/review)"
},
"price_basis": {
"type": "string",
"enum": [
"vendor_api",
"cached_matrix",
"estimate"
]
},
"fulfillment": {
"type": "string",
"enum": [
"connected",
"not_connected"
],
"description": "Whether UFP's checkout reaches this vendor. \"connected\" = a real paid order has gone end to end down this vendor+process lane. \"not_connected\" = the price is real but ordering isn't wired through yet; POST /v1/checkouts refuses it before any money moves."
},
"expires_at": {
"type": "string",
"format": "date-time"
}
}
},
"description": "Ranked best-first (price + speed) — unless an `order_by` applies, in which case they arrive already sorted by it (the echoed order_by says which)."
},
"order_by": {
"type": "object",
"description": "The presentation ordering offers[] is currently sorted by (see the refine body's `order_by`), echoed on every read while one applies. Absent = the default recommended (price + speed) rank."
},
"steps": {
"type": "array",
"description": "The last few refine steps behind this quote, NEWEST FIRST (ALC-127) — steps[0] is the step that produced this quote (what undo_last_step takes back). Computed from stored quote states on every read, capped at 3. Absent on original quotes.",
"items": {
"type": "object",
"required": [
"quote_id",
"parent_quote_id",
"summary",
"changes"
],
"properties": {
"quote_id": {
"type": "string",
"description": "The child quote this step produced"
},
"parent_quote_id": {
"type": "string",
"description": "The quote the step refined — its stored state is what undo restores"
},
"scenario": {
"type": "string",
"description": "Present when this step opened a comparison-scenario lane"
},
"summary": {
"type": "string",
"description": "Human one-liner for the step (\"added deadline 2026-09-05; material pla → asa\")"
},
"changes": {
"type": "array",
"description": "Field-level machine diff: constraint keys plus \"spec.<key>\" for spec deltas. `from` absent = the field wasn't set before; `to` absent = the step cleared it.",
"items": {
"type": "object",
"required": [
"field"
],
"properties": {
"field": {
"type": "string"
},
"from": {},
"to": {}
}
}
}
}
}
},
"near_misses": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"quote_id": {
"type": "string"
},
"vendor": {
"type": "string"
},
"vendor_display_name": {
"type": "string"
},
"vendor_logo_url": {
"type": "string",
"description": "The vendor's brand mark (small square image URL) for offer cards. Absent when AFN has no curated mark for the vendor — render the name alone, never a placeholder image"
},
"process": {
"type": "string",
"enum": [
"fdm_print",
"resin_print",
"powder_print",
"metal_print",
"elastomer_print",
"cnc",
"sheetmetal",
"laser_cut",
"decal",
"print",
"apparel"
]
},
"spec_resolved": {
"type": "object",
"additionalProperties": true,
"description": "Exact size/cut/material/color the vendor will make"
},
"quantity": {
"type": "integer"
},
"requested_quantity": {
"type": "integer",
"description": "Present when the vendor's minimum order forced quantity above what was requested — e.g. asked for 1, minimum is 25"
},
"substitutions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"requested": {
"type": "string"
},
"provided": {
"type": "string"
}
}
},
"description": "Present when this offer is a closest-match stand-in for an unsupported ask, e.g. {field:\"cut\", requested:\"triangle\", provided:\"contour\"}. The ask is logged for future vendor sourcing."
},
"min_order": {
"type": "object",
"properties": {
"threshold_cents": {
"type": "integer"
},
"detail": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"min_purchase",
"startup_fee"
],
"description": "Which per-order charge shaped the price: \"min_purchase\" (default when absent) = the vendor floors the order value; \"startup_fee\" = a flat per-order fee added to every order and already inside the subtotal (threshold_cents is that fee)."
}
},
"description": "Present when a vendor per-order charge shaped this price — an order-value floor (the subtotal is the vendor's per-order minimum, not a scaled per-part price; floors billed as a cart top-up on the shipping line count too) or a flat per-order startup fee (see kind). threshold_cents is the vendor-side amount in USD cents; detail is the vendor's published wording. Absent = the price scaled from the part."
},
"unit_price_cents": {
"type": "integer",
"description": "All-in unit price (payment-processing gross-up baked in — no separate fee line ever)"
},
"subtotal_cents": {
"type": "integer"
},
"shipping_options": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"label": {
"type": "string"
},
"cost_cents": {
"type": "integer",
"description": "All-in shipping cost, USD cents (payment-processing gross-up baked in; free shipping stays 0)"
},
"eta_date": {
"type": "string",
"format": "date"
},
"eta_business_days": {
"type": "integer"
}
}
}
},
"total_from_cents": {
"type": "integer",
"description": "Subtotal + cheapest shipping"
},
"preview": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"pending",
"ready",
"failed",
"unavailable"
]
},
"url": {
"type": "string",
"format": "uri"
},
"source": {
"type": "string",
"enum": [
"vendor_render",
"ufp_render"
]
}
},
"description": "Product preview for these exact options. Resolves asynchronously — poll GET /v1/quotes/{id}."
},
"attributes": {
"type": "object",
"properties": {
"outdoor_rated": {
"type": "boolean"
},
"submersible": {
"type": "boolean"
},
"high_temp": {
"type": "boolean"
},
"food_safe": {
"type": "boolean"
}
},
"additionalProperties": {
"type": "boolean"
},
"description": "Only vendor-advertised claims appear; an absent flag means \"no claim\", never \"no\". OPEN vocabulary: beyond the named keys, any additional boolean key is a vendor-advertised claim (e.g. iso_13485: true) — same honest-claims rule"
},
"vendor_rating": {
"type": "object",
"properties": {
"stars": {
"type": "number"
},
"review_count": {
"type": "integer",
"description": "Honest count of reviews on file — 0 means no one has reviewed yet"
},
"facets": {
"type": "object",
"properties": {
"quality": {
"type": "number"
},
"timeliness": {
"type": "number"
},
"accuracy": {
"type": "number"
}
},
"description": "Facet averages over reviews that scored them"
},
"reliability": {
"type": "array",
"items": {
"type": "object",
"properties": {
"process": {
"type": "string",
"enum": [
"fdm_print",
"resin_print",
"powder_print",
"metal_print",
"elastomer_print",
"cnc",
"sheetmetal",
"laser_cut",
"decal",
"print",
"apparel"
]
},
"material": {
"type": "string"
},
"orders": {
"type": "integer",
"description": "Honest sample size — completed orders for this process+material"
},
"stars": {
"type": "number"
},
"on_time_rate": {
"type": "number",
"minimum": 0,
"maximum": 1
}
}
},
"description": "Per-process/material track record (\"prints PC reliably\") — filterable via constraints.reliability"
}
},
"description": "Vendor star rating built from verified-purchase reviews only (see POST /v1/orders/{id}/review)"
},
"price_basis": {
"type": "string",
"enum": [
"vendor_api",
"cached_matrix",
"estimate"
]
},
"fulfillment": {
"type": "string",
"enum": [
"connected",
"not_connected"
],
"description": "Whether UFP's checkout reaches this vendor. \"connected\" = a real paid order has gone end to end down this vendor+process lane. \"not_connected\" = the price is real but ordering isn't wired through yet; POST /v1/checkouts refuses it before any money moves."
},
"expires_at": {
"type": "string",
"format": "date-time"
},
"excluded_by": {
"type": "object",
"required": [
"reason",
"detail"
],
"properties": {
"reason": {
"type": "string",
"enum": [
"attribute",
"deadline",
"budget"
]
},
"field": {
"type": "string",
"description": "The constraint field/demand key that excluded it"
},
"requested": {
"type": "string",
"description": "What the buyer asked for (stringified)"
},
"detail": {
"type": "string",
"description": "Human wording — identical to the quote note"
},
"earliest_eta": {
"type": "string",
"format": "date",
"description": "Deadline misses: soonest the part could actually arrive"
},
"days_late": {
"type": "integer",
"description": "Deadline misses: calendar days earliest_eta lands past the deadline"
},
"cents_over": {
"type": "integer",
"description": "Budget misses: cheapest all-in total minus max_budget_cents"
}
},
"description": "Why this bid sits outside the constraints, with machine fields"
}
},
"description": "A real vendor bid that failed exactly ONE stated constraint — context only, never orderable (checkout refuses near-miss ids). Relaxing the named constraint via a refine converts it into an ordinary offer."
},
"description": "Real bids that missed exactly one hard constraint, closest-first (capped at 6 per response) — shown for context, never mixed into offers[], never orderable as-is"
},
"routing": {
"type": "object",
"properties": {
"detected_file_kind": {
"type": "string",
"description": "What AFN detected the uploaded file to be (artwork, stl, step, dxf)"
},
"candidates": {
"type": "array",
"items": {
"type": "string",
"enum": [
"fdm_print",
"resin_print",
"powder_print",
"metal_print",
"elastomer_print",
"cnc",
"sheetmetal",
"laser_cut",
"decal",
"print",
"apparel"
]
},
"description": "Processes quoted live in this response"
},
"also_possible": {
"type": "array",
"items": {
"type": "object",
"properties": {
"process": {
"type": "string"
},
"reason": {
"type": "string"
}
}
},
"description": "Processes that could make this part but have no vendor on AFN yet — each is logged as a demand signal for vendor sourcing"
},
"expected_vendors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"vendor": {
"type": "string"
},
"process": {
"type": "string",
"enum": [
"fdm_print",
"resin_print",
"powder_print",
"metal_print",
"elastomer_print",
"cnc",
"sheetmetal",
"laser_cut",
"decal",
"print",
"apparel"
]
},
"logo_url": {
"type": "string",
"description": "The vendor's brand mark for the placeholder tile (same sourcing as offer.vendor_logo_url); absent when uncurated"
},
"expected_wait_s": {
"type": "number",
"description": "Expected answer time in seconds: the lane's p90 real answer latency over the last 14 days (plus queue delay behind the dispatch pool), clamped 3-75s — sized so the answer lands before a bar paced with it ends, nearly always; falls back to the process-pooled p90 (all vendors on the process), then coarse 2/8/20s health-probe buckets. Pace loading animations with it — never print it as a promise or complete a bar before the offer lands"
}
}
},
"description": "Who is STILL PRICING on this quote — live per read: lanes that settled (offers landed, no bid, failed, or superseded) drop out on the next read. Render placeholder tiles from it while status is \"quoting\". Health-down vendors are never dispatched, so never listed."
},
"viewer_mesh_url": {
"type": "string",
"description": "Face-classified viewer mesh for mesh/BREP uploads (stl/step/iges): a binary AFVM v1 blob — magic \"AFVM\", version, JSON header (bbox, classified faces: planes/cylinders with diameter+axis, holes), then little-endian Float32 positions, Uint32 indices, and Uint32 face-id-per-triangle. Derives lazily, so poll until 200 (the URL serves CORS on both 200 and 404). Absent for kinds with no mesh representation."
}
},
"description": "How the quote was dispatched (always includes expected_vendors; candidates/also_possible reflect auto-routing when `process` was omitted)"
},
"ufp_url": {
"type": "string",
"description": "Public download of this quote's .ufp part container: a plain STORE-mode ZIP holding ufp.json (the quote's CURRENT spec + constraints, pretty-printed) and design/<filename> (the design bytes verbatim) — the all-in-one part file. Re-uploadable anywhere a design file is accepted: its saved intent applies automatically as fill-if-absent defaults. Stable per quote id (refines mint child ids). Present whenever the quote has a design file."
},
"design_url": {
"type": "string",
"description": "Public download of the bare design file inside that container (the .step/.stl/artwork the network actually quotes) — 'save just the .step' without unzipping. Present alongside ufp_url."
},
"notes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Why vendors/offers were excluded, vendor outages, etc."
},
"created_at": {
"type": "string",
"format": "date-time"
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/agenticfabricationnetwork-ai-quote-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.