ARCNM

Resources

Changelog

Notable changes to the ARCNM API, SDKs, and developer platform.

Notable changes to the ARCNM API, SDKs, and developer platform. The API reference is auto-generated from the OpenAPI spec, so it always reflects the live API; this page records the changes behind it.

The public OpenAPI spec at /api/v1/openapi-public.json is the machine-readable source of truth — any change to the API surface appears there first.


2026-08-13

AddedComparisons say when calibration is uneven. Calibration corrects prices in the environment it was fitted for, so a calibrated environment and an uncalibrated one are not a like-for-like comparison — and nothing in the costs shows it. Comparison cells now carry calibration_cost_offset and calibrated; a cell corrected differently from its row's baseline is flagged calibration_mismatch, each environment reports calibrated_cells, and the matrix sets mixed_calibration. Flags, not exclusions: the deltas are real and stay in the comparison. arcnm_compare_environments carries the same caveat into its guidance.

Addedmaterial_ref on POST /calculations/batch, so every calculation entry point accepts a free-form material reference.

Addedregion and currency on /calculations/upload-and-quote(-json), matching /quote and /batch.

Addedcoverage on the /calculations/bulk-retry response, so a parked retry carries the same top-up payload a batch submit does.

FixedOne material contract everywhere. The multi-environment forms of /quote and /upload-and-quote resolved materials through a laxer path than their single-environment forms, so the same material_ref was rejected with one environment and silently ignored with two; /calculations/batch never validated material_grade_id and returned 500 for an unknown one. All entry points now answer identically with 422 material_unresolved plus ranked candidates.

FixedIdentical re-runs are free again. The dedup key was computed after the run recorded the material read from the drawing, so a re-run of the same part could never match it and was billed a second time.

FixedCalibrating an environment retires its cached prices. Publishing a calibration left the dedup key unchanged, so identical re-runs kept returning pre-calibration prices for the rest of the billing window.

Fixed/calculations/bulk-retry now serves an identical prior run from the cache like /calculations/{id}/run does, instead of re-running and re-billing it.

Fixed/calculations/batch now honours surface_treatments, raw_material_strategy and language, which it documented and dropped.

Fixedmaterial_unresolved is documented in the errors guide and its doc_url resolves. The quote-a-part recipe named a code (material_not_resolved) that the API never emits.


2026-08-11

AddedMulti-environment runs. Pass costing_environment_ids (up to 16, in comparison order) on /calculations/quote, /calculations/upload-and-quote(-json) or /calculations/batch to price each revision in every listed environment with one request — the file is uploaded once, the runs share a batch_id, and the response lists them in environment_runs. Each (revision × environment) cell is one calculation against your plan quota; a grid the remaining quota can't cover never runs in part — /calculations/batch rejects it whole (402 quota_exceeded with cells_requested/cells_available), while /quote and /upload-and-quote(-json) save the cells parked blocked and the 402's details also carry batch_id/parked_cells so a post-top-up retry resumes that batch.

AddedEnvironment comparison. GET /calculations/batches/{batch_id}/comparison and read-only POST /calculations/comparison return the parts × environments matrix server-side: per-cell costs and times, the cheapest environment per part (ties included), deltas vs the cheapest and vs your baseline (anchored on your baseline environment when it is in the grid, else the grid's first environment), per-environment wins and basket totals, staleness and mixed-currency flags.

AddedPOST /calculations/batches/{batch_id}/cancel cancels a whole batch in one call; GET /calculations gains a batch_id filter and list items now carry costing_environment_id and batch_id.

Added — MCP: curated read-only tool arcnm_compare_environments and prompt compare_environments.


2026-06-01

Added — Public developer portal at arcnm.io/docs: quickstart, authentication, concepts, recipes, SDKs, and a full API reference.

Added — The API reference is now auto-generated from the public OpenAPI spec on every build, so it can never drift from the running API. Each endpoint ships request/response schemas, enum values, multi-language samples (cURL / Python / TypeScript), and example responses.

Added — Machine-readable docs for AI tooling: llms.txt, llms-full.txt, per-page Markdown, and an interactive API explorer.

Changed — Every public endpoint now declares a typed response model, so the generated schemas are complete.