Run calculations using any enabled template. Supports all calculator types without requiring endpoint-specific code.
List available calculation templates
Returns all calculation templates available for API use, including their codes, names, categories, and whether a calculate call on each can return results.
query Parameters
limitinteger · min: 1 · max: 500Return up to this many templates. A page may contain fewer — always read the length of
templatesrather than assuminglimitentries.Default: 100offsetintegerNumber of templates to skip for pagination. An offset past the end returns an empty page with total unchanged.
Default: 0
Headers
Authorizationstring · requiredThe
Authorizationheader is used to authenticate with the API using your API key. Value is of the formatBearer YOUR_KEY_HERE.
Responses
List of available templates
templatesobject[] · requiredtotalinteger · requiredTotal number of templates available to this API key, independent of
limitandoffset. More pages remain whileoffsetplus the number of entries intemplatesis less thantotal.limitinteger · requiredThe
limitapplied to this page.offsetinteger · requiredThe
offsetapplied to this page.
Get template details
Returns detailed information about a specific template, including its input fields and available presets.
path Parameters
codestring · requiredTemplate code, as returned by
GET /v1/templates(e.g.loadsSnowASCE7-16).
Headers
Authorizationstring · requiredThe
Authorizationheader is used to authenticate with the API using your API key. Value is of the formatBearer YOUR_KEY_HERE.
Responses
Template details
idstring · uuidIdentifier of the currently published template version; changes when the template is republished — use
codeas the stable identifierversioninteger | nullThe template version that will serve calculations and sheet creates; null when the template records no version
codestringTemplate code
namestringHuman-readable template name
categorystring | nullTemplate category
descriptionstring | nullBrief description of the template; null when the template provides none
fieldsobject[]Input field definitions for the template
outputsobject[]The maximum set a calculate call can return, one entry per output, keyed by referenceId in the results object. Any one calculation carries a subset: outputs can be conditional on inputs, and some kinds (for example gis and customdiagram) are described here but not returned. An output that is also settable appears in fields[] and outputs[], and in both inputs and results, holding the stored value in one and the solved value in the other.
presetsobject[]Available presets for the template
Get template presets
Returns the available presets for a template, including their default values.
path Parameters
codestring · requiredTemplate code, as returned by
GET /v1/templates(e.g.loadsSnowASCE7-16).
Headers
Authorizationstring · requiredThe
Authorizationheader is used to authenticate with the API using your API key. Value is of the formatBearer YOUR_KEY_HERE.
Responses
Template presets
presetsobject[]
Validate inputs against a template
Validates the provided attributes against the template's field definitions without running a calculation. Useful for pre-flight validation before calling the calculate endpoint.
path Parameters
codestring · requiredTemplate code, as returned by
GET /v1/templates(e.g.loadsSnowASCE7-16).
Headers
Authorizationstring · requiredThe
Authorizationheader is used to authenticate with the API using your API key. Value is of the formatBearer YOUR_KEY_HERE.
Request Body
attributesobject · requiredWidget reference IDs and their values to validate
presetstringOptional preset code to apply defaults before validation
Responses
Validation passed
validboolean · enumEnum values:warningsobject[]Non-fatal warnings (e.g., deprecated fields)
Run a calculation using a template
Validates inputs against template widget definitions, creates a calculation sheet, solves it, and returns results.
Running many designs at once? Bulk Calculate runs up to 100 in one call instead of one call per design.
path Parameters
codestring · requiredTemplate code, as returned by
GET /v1/templates(e.g.loadsSnowASCE7-16).
Headers
Authorizationstring · requiredThe
Authorizationheader is used to authenticate with the API using your API key. Value is of the formatBearer YOUR_KEY_HERE.
Request Body
projectIdstring · requiredProject UUID to create the sheet in
attributesobject · requiredInput values keyed by referenceId — the keys are the fields[].referenceId values from GET /v1/templates/{code}. Send numbers for number fields, a list of rows for table fields (each row an array of values in columns[] order), and for enum fields an entry of that field's options copied exactly as published — including any leading or trailing whitespace, which can be the only thing separating two different options. Almost every option is a string; a few fields publish numbers, and those are accepted either as the number or as its string. Omitted fields fall back to the template's defaults (or the chosen preset's).
presetstringOptional preset code to apply defaults before user attributes
namestringOptional name for the created sheet
Responses
Calculation completed successfully
sheetIdstringUnique identifier for the created calculation sheet
projectIdstring · uuidThe project the sheet was created in.
sheetUrlstring · uriDirect link to the sheet in the ClearCalcs web app. Always present on a successful response.
templateCodestringTemplate code that was used
inputsobjectEcho of the resolved values the calculation ran with — one entry per settable field, keyed by the same referenceIds as fields[] in GET /v1/templates/{code}. Values are echoed in stored form: numbers as strings, enum choices as their stored value or row index, table fields as row arrays.
resultsobjectCalculation results keyed by referenceId. The keys come from the template schema's outputs[] (GET /v1/templates/{code}), and a given calculation returns the subset of those that apply to the inputs you sent. Value shape depends on the output kind: numbers, booleans, strings (including multi-sentence guidance text), and arrays of row objects, which may be empty. Numeric values are returned unrounded.
passedboolean | nullWhether the calculation's checks passed; null when the template defines no pass/fail checks
summaryCheckValue of the template's governing summary check — a pass/fail boolean or a numeric utilisation, depending on the template. Present when the template defines one.
summaryCheckReferenceIdstringreferenceId of the governing check. Present with summaryCheck.
summaryCheckErrorbooleanTrue when the summary check could not be evaluated. Present when the template defines a summary check.
summaryCheckFailReasonsstring[]Reasons the summary check failed. Present only on failure.
warningsobject[]Non-blocking validation warnings, present when any were raised. Unrecognised attribute names are returned as a 422 instead.
Bulk Calculate
Create and solve up to 100 sheets in one project in a single call. The request is accepted whole or rejected whole: if any item is invalid, 422 lists every item's errors and nothing is created. On 201 the sheets are being created and solved; poll the Location header until state is completed or failed. One batch runs per project at a time: a request while one is running returns 409 naming the batch to poll.
Headers
Authorizationstring · requiredThe
Authorizationheader is used to authenticate with the API using your API key. Value is of the formatBearer YOUR_KEY_HERE.
Request Body
projectIdstring · uuid · requiredProject the sheets are created in.
itemsobject[] · minItems: 1 · maxItems: 100 · requiredThe sheets to create and solve, 1 to 100. Reported back in this order.
Responses
The batch was accepted and is being processed.
batchIdstring · uuid · requiredIdentifier to poll.
typestring · requiredAlways
bulk-calculate.statestring · requiredprocessingwhile sheets are being created and solved.completedonce every item has an outcome; items that could not be solved carry their ownerror, so a completed batch can havesummary.solvedof 0.failedwhen the batch itself could not run, or when it stopped before finishing and will not resume (seeerror). Treat an unrecognised value as still in progress.progressPercentinteger · min: 0 · max: 100 · requiredWhole-number share of the batch's own sheets solved so far, 0 to 100, while
processing. Set to 100 when the batch reachescompleted, whateversummary.solvedis; readsummaryfor the outcome. Frozen where it stopped whenfailed.projectIdstring · uuid · requireditemCountinteger · requiredNumber of items requested.
summaryobject · requiredCounts over the items.
pendingistotal - solved - errored - staleand is 0 once the batch is terminal, where every item is solved or carries anerror. The three non-solved counters answer different questions and are never folded together, because the remedy differs:erroredcounts items the batch could not produce results for, where retrying is the fix;stalecounts items it did solve whose inputs have changed since, where nothing failed and re-solving the sheet is the fix;checkErroredcounts items that solved but whose governing check produced no verdict, and those are also counted insolved. To confirm every item is usable, checkerrored,staleandcheckErroredare all 0.stateis the completion signal. Whileprocessingthe counts are progress, andpendingcan read 0 in the moments between the last sheet solving and the batch reaching a terminal state; do not use it to detect completion. On a terminal batch the counters are recomputed from the sheets' current state on every poll, so the samebatchIdcan report different counts later if its sheets are edited or deleted.createdAtstring · date-time · requiredcompletedAtstring | null · date-time · requirednulluntil the batch is terminal.durationSecondsnumber | null · requiredHow long the batch took. Set when the batch reached a terminal state and the duration was recorded;
nullotherwise. A batch the worker had to mark failed as a last resort can befailedwithdurationSecondsnull.errorrequiredWhy the batch itself failed. Set when the batch failed and the reason was recorded;
nullotherwise. A batch the worker had to mark failed as a last resort can befailedwitherrornull.itemsarray | null · requiredOne entry per requested item, in request order.
nulluntil the batch is terminal.
Get Bulk Calculate Batch
Status of a bulk-calculate batch. While it runs, progressPercent and summary advance and items is null; the Location and Retry-After headers say where and how soon to poll. Once state is completed or failed, items lists every requested item in request order and the poll headers are gone.
path Parameters
projectIdstring · uuid · requiredProject UUID
batchIdstring · uuid · requiredThe
batchIdreturned when the batch was accepted.
Headers
Authorizationstring · requiredThe
Authorizationheader is used to authenticate with the API using your API key. Value is of the formatBearer YOUR_KEY_HERE.
Responses
The batch's current status; items is present only once the batch is terminal.
batchIdstring · uuid · requiredIdentifier to poll.
typestring · requiredAlways
bulk-calculate.statestring · requiredprocessingwhile sheets are being created and solved.completedonce every item has an outcome; items that could not be solved carry their ownerror, so a completed batch can havesummary.solvedof 0.failedwhen the batch itself could not run, or when it stopped before finishing and will not resume (seeerror). Treat an unrecognised value as still in progress.progressPercentinteger · min: 0 · max: 100 · requiredWhole-number share of the batch's own sheets solved so far, 0 to 100, while
processing. Set to 100 when the batch reachescompleted, whateversummary.solvedis; readsummaryfor the outcome. Frozen where it stopped whenfailed.projectIdstring · uuid · requireditemCountinteger · requiredNumber of items requested.
summaryobject · requiredCounts over the items.
pendingistotal - solved - errored - staleand is 0 once the batch is terminal, where every item is solved or carries anerror. The three non-solved counters answer different questions and are never folded together, because the remedy differs:erroredcounts items the batch could not produce results for, where retrying is the fix;stalecounts items it did solve whose inputs have changed since, where nothing failed and re-solving the sheet is the fix;checkErroredcounts items that solved but whose governing check produced no verdict, and those are also counted insolved. To confirm every item is usable, checkerrored,staleandcheckErroredare all 0.stateis the completion signal. Whileprocessingthe counts are progress, andpendingcan read 0 in the moments between the last sheet solving and the batch reaching a terminal state; do not use it to detect completion. On a terminal batch the counters are recomputed from the sheets' current state on every poll, so the samebatchIdcan report different counts later if its sheets are edited or deleted.createdAtstring · date-time · requiredcompletedAtstring | null · date-time · requirednulluntil the batch is terminal.durationSecondsnumber | null · requiredHow long the batch took. Set when the batch reached a terminal state and the duration was recorded;
nullotherwise. A batch the worker had to mark failed as a last resort can befailedwithdurationSecondsnull.errorrequiredWhy the batch itself failed. Set when the batch failed and the reason was recorded;
nullotherwise. A batch the worker had to mark failed as a last resort can befailedwitherrornull.itemsarray | null · requiredOne entry per requested item, in request order.
nulluntil the batch is terminal.