Manage individual calculation sheets — read one back, update its inputs, solve or re-solve it, and delete single sheets or clean up many at once.
Create Sheet
Create an unsolved sheet for any template. Set inputs with PATCH /v1/sheets/{sheetId} and solve with POST /v1/sheets/{sheetId}/solve — or use POST /v1/templates/{code}/calculate to create and solve in one call. The Sheet Lifecycle guide walks all four steps on one calculation.
path Parameters
codestring · requiredTemplate code (e.g., timberBeamASD, loadsSnowASCE7-22)
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. Accepted in canonical, uppercase, braced, or unhyphenated form, as on
POST /v1/templates/{code}/calculate; the response echoes the canonical form.
namestringOptional name for the created sheet
Responses
The unsolved sheet was created.
sheetIdstring · uuid · requiredUnique identifier for the sheet.
projectIdstring · uuid · requiredProject the sheet belongs to.
templateCodestring · requiredTemplate the sheet was created from.
statusstring · enum · requiredA newly created sheet has no results yet.
Enum values:unsolvedsheetUrlstring · uri · requiredLink to the sheet in the Calcs.com app.
namestringSheet name.
createdAtstring · date-timeCreation timestamp.
Bulk Delete Sheets
Delete up to 100 sheets in one call. Not atomic: each id is processed independently and reported in results (in request order). Returns 200 when every id was deleted, or 207 Multi-Status when at least one failed. A NOT_FOUND item means the id was not found or is not accessible with this API key.
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
sheetIdsstring[] · minItems: 1 · maxItems: 100 · requiredSheet UUIDs to delete (1–100).
Responses
Every requested sheet was deleted.
resultsobject[] · required
Get Sheet
Retrieve a calculation sheet — any template — with its current inputs and, once solved, its results. The Sheet Lifecycle guide walks all four steps on one calculation.
path Parameters
sheetIdstring · uuid · requiredSheet UUID. Accepted in canonical, uppercase, braced, or unhyphenated form, as
projectIdis onPOST /v1/templates/{code}/sheets.
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 sheet's current inputs, and results when it has been solved.
sheetIdstring · uuid · requiredUnique identifier for the sheet.
projectIdstring · uuid · requiredProject the sheet belongs to.
templateCodestring · requiredTemplate the sheet was created from.
statusstring · enum · requiredsolvedwhile the stored results were computed from the inputs the sheet holds now. A sheet that has never been solved, or whose inputs changed since its last solve, isunsolved— re-solve to get results for the current inputs.Enum values:solvedunsolvedinputsobject · requiredCurrent input values keyed by widget reference ID, as stored: numbers read back as strings and booleans as
"1"/"0". Treat anenumfield's stored value as opaque — which representation a template uses varies by field, and one of them resembles a position inoptionswithout being one. Writes take the label; keep it rather than deriving it from the read.sheetUrlstring · uri · requiredLink to the sheet in the Calcs.com app.
passedboolean | nullWhether this sheet has ever passed:
truefrom its first passing solve onwards,nullbefore that. It is not the latest solve's verdict — a sheet edited into failing and re-solved still reportstrue. ReadsummaryCheckfor the current verdict. Present when solved.summaryChecknumber | booleanValue of the template's governing check for the last solve. The check passes when
summaryCheckErrorisfalseand this istrueor a number from 0 to 1. Absent when the template defines no governing check.summaryCheckReferenceIdstringReference ID of the widget
summaryCheckcame from.summaryCheckErrorbooleanWhether the governing check could not be evaluated. A check in error has no verdict, whatever
summaryCheckholds.summaryCheckFailReasonsstring[]Why the governing check failed, when it did.
resultsobjectSolved outputs keyed by the template's configured API output reference IDs. Present when solved.
Delete Sheet
Delete a calculation sheet. It is no longer returned by or accessible through the API. Re-deleting the same id returns 404, so retries are safe.
path Parameters
sheetIdstring · uuid · requiredSheet UUID
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 sheet was deleted and is no longer accessible through the API.
Update Sheet Inputs
Update a sheet's input attributes. Keys are widget reference IDs from the template (see GET /v1/templates/{code}). The set is applied as one unit: values are checked against the template, and a value it rejects returns 422 naming the field in details with nothing written — a sheet never holds part of an update. A key that matches no widget on the template is accepted but not written: the response names it in warnings and leaves it out of updatedAttributes, which lists exactly the keys this request stored. An explicit null is skipped the same way (reported with a null_value warning), never treated as clearing the field. Updating does not recalculate — solve the sheet to refresh results. The Sheet Lifecycle guide walks all four steps on one calculation.
path Parameters
sheetIdstring · uuid · requiredSheet UUID. Accepted in canonical, uppercase, braced, or unhyphenated form, as
projectIdis onPOST /v1/templates/{code}/sheets.
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 new values. At least one key, at most 200.
Responses
The attributes were updated on the same sheet.
sheetIdstring · uuid · requiredUnique identifier for the sheet. Unchanged by updates.
statusstring · enum · requiredUpdated inputs take effect at the next solve.
Enum values:unsolvedupdatedAttributesstring[] · requiredReference IDs the sheet now holds from this request. A key the template does not define is skipped, so it is absent here and named in
warnings— compare the two to confirm a write landed.
warningsobject[]Keys that were not applied, and why. Absent when there is nothing to report.
Solve Sheet
Solve (or re-solve) a calculation sheet and return its results. Re-solving after an input update recomputes results on the same sheet; the sheet id does not change. Solving can take a few seconds, and is safe to retry — unchanged inputs produce the same results. The Sheet Lifecycle guide walks all four steps on one calculation.
path Parameters
sheetIdstring · uuid · requiredSheet UUID. Accepted in canonical, uppercase, braced, or unhyphenated form, as
projectIdis onPOST /v1/templates/{code}/sheets.
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 sheet was solved and has results.
sheetIdstring · uuid · requiredUnique identifier for the sheet.
statusstring · enum · requiredsolvedwhen the results below were computed from the inputs the sheet holds now — the normal outcome.unsolvedonly where another write landed on the sheet while the solve was running, leaving results that no longer match its inputs; solve again to get results for them.Enum values:solvedunsolvedpassedboolean | null · requiredWhether this sheet has ever passed:
truefrom its first passing solve onwards,nullbefore that. It is not this solve's verdict — a sheet edited into failing and re-solved still reportstrue. ReadsummaryCheckfor the verdict of this solve.resultsobject · requiredSolved outputs keyed by the template's configured API output reference IDs.
sheetUrlstring · uri · requiredLink to the sheet in the Calcs.com app.
projectIdstring · uuidProject the sheet belongs to.
summaryChecknumber | booleanValue of the template's governing check for this solve. The check passes when
summaryCheckErrorisfalseand this istrueor a number from 0 to 1. Absent when the template defines no governing check.summaryCheckReferenceIdstringReference ID of the widget
summaryCheckcame from.summaryCheckErrorbooleanWhether the governing check could not be evaluated. A check in error has no verdict, whatever
summaryCheckholds.summaryCheckFailReasonsstring[]Why the governing check failed, when it did.