Upload And Quote
upload_and_quotePrice a new part from its CAD file in one call (German: Fertigungskosten). Send a STEP file as base64, or a DXF flat pattern with sheet_gauge_mm and a material; a PDF drawing is optional (tolerances, finishes, treatments). It files the part under part_number and starts the calculation; after precheck_part, send precheck_id and no file. Billable: one calculation per different part and costing environment, only if it succeeds; copies of one part count once, a catalogue part such as a screw not at all. A single part may be up to 5 MB, an assembly up to 25 MB; send a large STEP gzip-compressed, about 5x smaller. It runs in the background, usually for seconds; returns the calculation id, status, eta_seconds and the part. Follow it with get_calculation. File on the person's computer: get_upload_link. Part already in ARCNM: quote_part.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| engine | No | Pricing engine selector; retained for back-compat and always normalized to the sole engine. | arcnm |
| region | No | Pricing region override; defaults to the costing environment's region when omitted. | |
| currency | No | ISO 4217 currency code for the quote; defaults to the costing environment's currency when omitted. | |
| language | No | BCP 47 language for the calculation's captured context (e.g. 'de', 'en'). Part of the calculation's cache identity. | de |
| lot_size | No | Number of identical parts produced per batch (1 to 1,000,000,000). | |
| folder_id | No | Optional workspace folder to file the created part into. | |
| on_conflict | No | How to resolve a part_number that already exists: keep_folder (add a revision, leave the part where it is — the historical behaviour), move (add a revision and re-file into folder_id), new_part (create a separate part under a distinct number), or skip (upload nothing, create no calculation, meter nothing). The outcome is always reported in ``filing``. | keep_folder |
| part_number | Yes | Natural-key part number; reused to attach a new revision if the part already exists. | |
| precheck_id | No | Start this precheck (the app only (not available over MCP)): its stored file, drawings and statements — send no file. Starting it again answers with the calculation it started. | |
| cad_file_b64 | No | Base64 (or a data: URI) of the 3D CAD file (e.g. STEP). Required unless precheck_id is sent. | |
| cad_filename | No | CAD filename including extension, e.g. bracket.step — used for format detection. Required with cad_file_b64. | |
| material_ref | No | Free-form material reference (URN, Werkstoffnummer, AISI/SAE code, trade name, or your SKU). Unresolvable values are rejected with 422 material_unresolved plus ranked candidates. Omit to price the material read from the part's drawing (or the environment default). | |
| nest_item_id | No | Price this calculation's material on its part's line of a job nest — the `id` of a line (`items[].id`) of a job nest that has solved it. The material is then the line's share of the sheets the job nest cut it from together with other parts, less its share of what their skeleton and reusable rests earn back; everything else is priced as usual. The line must be of your organization, of this costing environment and of this part revision, and its job nest must have solved it; otherwise the request is rejected with 422 `nest_item_unresolved`, `details.reason` saying why. It cannot be combined with `stock_format_id` or with customer-supplied material. An upload creates a new part revision, so the upload forms reject every line. A line of the sheets an assembly shares among its own components prices that assembly only: naming one is rejected as `not_found`, and a re-run of such a component prices it on its own sheet. Omit it to price the part on its own sheet. | |
| rfq_file_b64 | No | Optional base64 (or data: URI) of an RFQ text file. | |
| rfq_filename | No | RFQ filename including extension. | |
| annual_volume | No | Expected yearly quantity used to amortize setup cost (1 to 1,000,000,000). | |
| sheet_gauge_mm | No | Sheet thickness in millimetres — required when the CAD file is a DXF flat pattern (a 2D cutting file carries no thickness); ignored for STEP. | |
| stock_format_id | No | Price this calculation on one stock format — the `id` of a format from the `materials_list_stock_formats` tool (toolset `catalog`). An id names the format, not only the version it came from: when the format has been changed since, the version current on the day the calculation is created is used. An id your organization cannot price with today (unknown, retired or hidden) is rejected with 422 `stock_format_unresolved`. When the part cannot be cut from that format — too small, not bought in the part's thickness or material, or one the machine cannot load — or is not cut from sheet at all (milled, turned or bought finished), the calculation is priced as if none had been chosen, and `analytics.pipeline_notes` says why (`stock_format_pin_unavailable`). Omit it to price on the format that uses the least material per part. | |
| cad_content_type | No | MIME type of the CAD file, when known. | |
| drawing_file_b64 | No | Optional base64 (or data: URI) of a 2D drawing (PDF/PNG/JPEG). | |
| drawing_filename | No | Drawing filename including extension. | |
| rfq_content_type | No | MIME type of the RFQ file, when known. | |
| material_grade_id | No | UUID of a resolved material grade; takes precedence over material_ref when both are supplied. | |
| max_overage_cents | No | The most this calculation may cost past your plan's included calculations, in cents; parts past it wait (run_spend_cap). | |
| precheck_revision | No | The revision the precheck showed; refused with 409 precheck_changed when what it decides moved since. | |
| provided_stock_kind | No | Shape of the provided stock; 'near_net_profile' scopes the plan. | none |
| drawing_content_type | No | MIME type of the drawing file, when known. | |
| material_is_provided | No | True when the customer supplies the raw material (beigestellt). | |
| costing_environment_id | No | UUID of the costing environment to price against. Omit to use your organization's default environment. | |
| costing_environment_ids | No | Price the part in several environments at once, in comparison order. The file is uploaded once; each environment becomes one calculation and counts as one against the plan quota. The response then carries ``batch_id`` and ``environment_runs``. Mutually exclusive with ``costing_environment_id``. |