BulkCalculateRequest
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.
BulkCalculateItem
templateCodestring · requiredTemplate to create the sheet from.
attributesobject · requiredInput values keyed by widget reference ID, as for a single calculate. Required on every item: unlike a single calculate, a batch item that sends none is refused.
refstring · maxLength: 64Your own identifier for this item, echoed on its status. Must be unique within the batch when given.
namestringSheet name. Defaults to the template name plus the item's
refor position.presetstringA preset code of the template to apply before
attributes.
BatchStatus
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.
BatchItem
refstring | null · requiredThe
refsent for this item, ornullif none was.sheetIdstring | null · uuid · requirednullwhen no sheet was created for this item.projectIdstring · uuid · requiredtemplateCodestring · requiredstatusstring · enum · requiredsolvedwhenresultswere computed from the inputs the sheet holds now. Any item that is notsolvedcarrieserror.Enum values:solvedunsolved
inputsobjectAs on
GET /v1/sheets/{sheetId}.sheetUrlstring · uriLink 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 this batch's verdict — a sheet edited into failing and re-solved still reportstrue. ReadsummaryCheckandsummaryCheckErrorfor the verdict. Present when solved.resultsobjectAs on
GET /v1/sheets/{sheetId}. Present when solved.summaryChecknumber | booleanValue of the template's governing check for the last solve. Present only when the check produced a verdict: absent when the template defines no governing check, and absent when the check could not be evaluated, where
summaryCheckErroristrueinstead. The check passes when this is present,summaryCheckErrorisfalse, and the value istrueor a number from 0 to 1.summaryCheckReferenceIdstringReference ID of the widget
summaryCheckcame from.summaryCheckErrorbooleanWhether the governing check could not be evaluated. A check in error has no verdict and carries no
summaryCheck; the item is still reported as solved, andsummary.checkErroredcounts it.summaryCheckFailReasonsstring[]Why the governing check failed. Present only when the check evaluated and failed; absent when it passed and when it errored.
warningsobject[]Non-fatal findings against the attributes sent for this item, as a single calculate reports them. Absent when there is nothing to report, and withheld on an item whose template is no longer accessible.
errorobjectWhy one item has no results.
SOLVE_FAILED: the solver could not answer this sheet.RESULTS_STALE: the batch solved this sheet, but its inputs have changed since (edited in the app, patched through the API, the project's defaults changed, or the sheet was upgraded), so the results no longer match. Solve the sheet again or resubmit the item.SHEET_UNAVAILABLE: the item has no sheet to report, either because it was deleted after the batch ran or because the batch died before creating it without recording a reason.TEMPLATE_NOT_FOUND: the template is no longer accessible with this API key. A batch-level code (BATCH_FAILED,VALIDATION_CHANGED,BATCH_ABANDONED) appears here when the batch stopped before this item was finished. Treat an unrecognised code as a failure.
ExportStatus
exportIdstring · uuid · requiredstatestring · enum · requiredEnum values:processingcompletedfailedprogressPercentnumber · min: 0 · max: 100 · requiredexportUrlstring | null · uri · requiredPresigned S3 URL, or
nullwhile the export is still processing or has failed. Populated only oncestate === "completed", after which it expires 10 minutes after this response.
ProblemDetails
typestring · uri · requiredURI identifying the problem type.
titlestring · requiredShort, human-readable summary of the problem type.
statusinteger · requiredHTTP status code.
detailstring · requiredHuman-readable explanation specific to this occurrence.
instancestringThe request path that produced the error.
traceobjectGateway trace metadata for support (timestamp, requestId, buildId, rayId).
TimberBeamAttributes
L_XnumberBeam span length in feet
typestring · enumMember selection type. 'Database' uses standard lumber from NDS tables, 'Custom' allows custom dimensions
Enum values:DatabaseCustomDefault: DatabasememberstringLumber designation when type='Database' (e.g., '2x10 D.Fir-L SS', '4x12 DF-L No.1')
supportsarray[] · minItems: 2Support definitions. Each support is [type, position_ft, bearing_width_in]. Minimum 2 supports required.
loadsDistarray[]Distributed loads array. Format: [label, start, end, width1, width2, {load_cases}]. For joist presets use: [label, 0, 'L', 'spacing', 'TW_s', {load_cases}]
loadsConcarray[]Concentrated/point loads. Format: [label, position_ft, {load_cases}] where load_cases contains {D: [force, moment], L: [force, moment]}
loadsLinearray[]Line loads (force per unit length). Format: [label, start_ft, end_ft, {load_cases}] where load_cases contains {D: [plf_start, plf_end], L: [plf_start, plf_end]}
loadsDist_inclinearray[]Distributed loads for inclined beams. Format: [label, start, end, width1, width2, orientation, {load_cases}]. Orientation: 'Gravity - Plan', 'Gravity - Inclined', or 'Aligned'. Requires incline_flag to be set.
loadsConc_inclinearray[]Point loads for inclined beams. Format: [label, position_ft, null, orientation, {load_cases}]. Orientation: 'Gravity' or 'Aligned'. Requires incline_flag to be set.
loadsLine_inclinearray[]Line loads for inclined beams. Format: [label, start_ft, end_ft, orientation, {load_cases}]. Orientation: 'Gravity - Plan', 'Gravity - Inclined', or 'Aligned'. Requires incline_flag to be set.
spacingnumberJoist spacing in inches (for joist presets). floorJoist, ceilingJoist, deckJoist default to 16.
n_comnumberNumber of plies for multi-ply beams. Defaults: floorGirder/roofGirder/floorHeader/deckBeam=3, ceilingJoist/hipValley/roofHeader/comboBeam=2, others=1.
Default: 1flitchstring · enumEnable flitch plates (steel reinforcement). Defaults to 'Yes' for genericFlitchBeam preset.
Enum values:YesNoDefault: Non_flitchnumberNumber of steel flitch plates. Defaults to 2 for genericFlitchBeam preset.
t_flitchnumberThickness of flitch plates in inches. Defaults to 0.375 for genericFlitchBeam preset.
d_flitchnumberDepth of flitch plates in inches. If omitted, auto-calculated based on wood member depth.
F_ynumberYield strength of flitch plate steel in psi. Defaults to 36000 (36 ksi).
Default: 36000wetstring · enumService moisture condition. Defaults: deckJoist/deckBeam='Wet' (outdoor exposure), all others='Dry'.
Enum values:DryWetDefault: DryTstring · enumTemperature range for adjustment factors
Enum values:T ≤ 100°F100°F < T ≤ 125°F125°F < T ≤ 150°FDefault: T ≤ 100°FincSWstring · enumInclude self-weight in analysis
Enum values:YesNoDefault: YesLLTstring · enumLive load type for load combinations. ceilingJoist defaults to 'Storage'. Most presets default to 'Occupancy'.
Enum values:OccupancyStorageImpactDefault: OccupancyDelta_hardnumberAbsolute deflection limit in inches
Default: 2Delta_Span_STnumberShort-term deflection limit as L/xxx (e.g., 360 means L/360)
Default: 360Delta_Span_LTnumberLong-term deflection limit as L/xxx
Default: 240flag_SDstring · enumConsider simplified DL+LL deflection check. Defaults to 'Yes' for genericFlitchBeam, floorGirder, ceilingJoist, rafter, hipValley, roofGirder, roofHeader, floorHeader, deckJoist, deckBeam, and comboBeam presets.
Enum values:YesNoDefault: NoDelta_Span_DL+LLnumberSimplified DL+(LL or SL) deflection limit as L/xxx. Preset defaults: floorJoist/floorGirder/ceilingJoist/roofHeader/floorHeader/deckJoist/deckBeam/comboBeam=180, rafter/hipValley/roofGirder=100, genericFlitchBeam=240.
Default: 240repeatstring · enumMember repetition for load sharing. Presets floorJoist, floorGirder, ceilingJoist, rafter, roofGirder, floorHeader, deckJoist, deckBeam default to 'Repeating'. Most others default to 'Non-Repeating'.
Enum values:Non-RepeatingRepeatingDefault: Non-RepeatingLTB_bracingstring · enumLateral torsional buckling bracing condition. Defaults: floorJoist/deckJoist/deckBeam='Top Braced', ceilingJoist='Bottom Braced', floorGirder/roofGirder/headers='No Continuous Bracing'.
Enum values:No Continuous BracingTop BracedBottom BracedTop & Bottom BracedDefault: No Continuous BracingdoubleCantileverDeflectionstring · enumDouble L/ deflection limits for cantilevers. Defaults to 'Yes' for rafter, hipValley, roofGirder, roofHeader, floorHeader, deckJoist, deckBeam, and comboBeam presets.
Enum values:YesNoDefault: Nob_inputnumberCustom section width in inches. Required when type='Custom'.
d_inputnumberCustom section depth in inches. Required when type='Custom'.
speciesstringWood species and grade. Required when type='Custom'. Example values: 'Douglas Fir-Larch SS (DL)', 'Southern Pine No.1 (SP)'.
bendingAxisstring · enumBending axis for analysis. Defaults to 'X-X' (strong axis).
Enum values:X-XY-YDefault: X-Xincline_flagstring · enumBeam inclination mode. 'Horizontal' for standard beams, 'Simple Slope' for rafters, 'Hip/Corner Slope' for hip/valley rafters. When set to a slope mode, use the _incline load variants.
Enum values:HorizontalSimple SlopeHip/Corner SlopeDefault: Horizontalalpha_inclinenumberBeam inclination angle in degrees (for Simple Slope mode).
alpha_roof_1numberFirst roof slope angle in degrees (required for hipValley preset / Hip/Corner Slope mode).
alpha_roof_2numberSecond roof slope angle in degrees (required for hipValley preset / Hip/Corner Slope mode).
L_side_1numberSide length in feet for hip/valley geometry.
location_based_onstring · enumWhether load and support positions are measured along the plan (horizontal) or inclined (along-slope) length.
Enum values:PlanInclinedDefault: Planbrace_PLstring · enumPoint loads provide lateral bracing.
Enum values:YesNoDefault: NoshearDeltastring · enumInclude shear deflection in analysis.
Enum values:YesNoDefault: NoLL_patternstring · enumConsider pattern loading for live loads.
Enum values:YesNoDefault: Noincisedstring · enumIncised treatment for preservative-treated lumber. Applies Ci adjustment factor per NDS.
Enum values:YesNoDefault: No
TimberBeamResults
passedbooleanWhether the beam passes all design checks
utilizationRationumberOverall utilization ratio (demand/capacity)
summaryCheckobject
TimberBeamPreset
Beam configuration preset. Each preset provides sensible defaults: floorJoist/ceilingJoist/deckJoist use spacing format with repeat='Repeating'; floorGirder uses n_com=3 with TW format loads; comboBeam uses n_com=2 with TW format for combined floor+roof loading; genericFlitchBeam enables flitch plates; deckJoist/deckBeam default to wet='Wet' for outdoor exposure. See documentation for full preset defaults.
SnowLoadRiskCategory
Building risk category per ASCE 7 Table 1.5-1
SnowLoadExposure
Roof exposure condition per ASCE 7 Table 7.3-1
SnowLoadRoughness
Ground surface roughness category per ASCE 7 Table 7.3-1
SnowLoadSurface
Roof surface type affecting snow sliding
ThermalCondition716
Thermal condition code per ASCE 7-16 Table 7.3-2
ThermalCondition722
Thermal condition description per ASCE 7-22 Table 7.3-2
SnowLoadAttributes716
exposurestring · enum · requiredRoof exposure condition per ASCE 7 Table 7.3-1
Enum values:Fully ExposedPartially ExposedShelteredthermalConditionstring · enum · requiredThermal condition code per ASCE 7-16 Table 7.3-2
Enum values:123456eaveToRidgeDistancenumber · requiredHorizontal distance from eave to ridge in feet
roofSlopenumber · min: 0 · max: 12 · requiredRoof slope ratio (rise per 12 inches of run, e.g., 6 for 6:12)
overrideDefaultsbooleanSet to true to override project defaults for risk category, ground snow load, and roughness
Default: falseriskCategorystring · enumBuilding risk category per ASCE 7 Table 1.5-1
Enum values:IIIIIIIVgroundSnowLoadnumberGround snow load in psf. Required if overrideDefaults is true.
roughnessCategorystring · enumGround surface roughness category per ASCE 7 Table 7.3-1
Enum values:BCDAbove tree lineAlaska no treesroofSurfacestring · enumRoof surface type affecting snow sliding
Enum values:Slippery surfacesObstructed or non-slippery surfaceslowerRoofDriftsarray[]Array of lower roof drift configurations: [label, upperFetch, lowerFetch, heightDiff]
projectionDriftsarray[]Array of projection drift configurations: [label, fetchDistance, projectionHeight]
commentsstringOptional notes or comments to include on the calculation sheet
SnowLoadAttributes722
exposurestring · enum · requiredRoof exposure condition per ASCE 7 Table 7.3-1
Enum values:Fully ExposedPartially ExposedShelteredthermalConditionstring · enum · requiredThermal condition description per ASCE 7-22 Table 7.3-2
Enum values:All other structuresStructures kept just above freezingUnheated and open air structuresStructures intentionally kept below freezingContinuously heated greenhousesFreezer buildingseaveToRidgeDistancenumber · requiredHorizontal distance from eave to ridge in feet
roofSlopenumber · min: 0 · max: 12 · requiredRoof slope ratio (rise per 12 inches of run)
overrideDefaultsbooleanSet to true to override project defaults
Default: falseriskCategorystring · enumBuilding risk category per ASCE 7 Table 1.5-1
Enum values:IIIIIIIVgroundSnowLoadnumberGround snow load in psf. Required if overrideDefaults is true.
roughnessCategorystring · enumGround surface roughness category per ASCE 7 Table 7.3-1
Enum values:BCDAbove tree lineAlaska no treesroofSurfacestring · enumRoof surface type affecting snow sliding
Enum values:Slippery surfacesObstructed or non-slippery surfacesroofInsulationRValuenumber · min: 0Roof insulation R-value (hr·ft²·°F/BTU)
widthFactornumber · min: 0 · max: 1Width factor W₂ for unbalanced loads
lowerRoofDriftsarray[]Array of lower roof drift configurations
projectionDriftsarray[]Array of projection drift configurations
commentsstringOptional notes or comments to include on the calculation sheet
SnowLoadResults
passedbooleanWhether the calculation passed all checks
outputsobjectCalculation outputs
SnowLoadSheetResponse
sheetIdstring · uuid · requiredUnique identifier for the sheet
statusstring · enum · requiredCalculation status
Enum values:solvedunsolvederror
namestringName of the sheet
standardstring · enumDesign standard used
Enum values:ASCE 7-16ASCE 7-22createdAtstring · date-timeSheet creation timestamp
attributesobjectCurrent attribute values on the sheet
resultsobjectCalculated snow load results. Note: Additional output fields may be available beyond those documented here.
SnowLoadPatchAttributes
eaveToRidgeDistancenumber · min: 0Horizontal distance from eave to ridge (ft)
roofSlopenumber · min: 0 · max: 12Roof slope ratio (rise per 12 inches)
exposurestring · enumRoof exposure condition
Enum values:Fully ExposedPartially ExposedShelteredthermalConditionThermal condition (format depends on sheet's standard)
overrideDefaultsbooleanSet to true to override project defaults
riskCategorystring · enumBuilding risk category
Enum values:IIIIIIIVgroundSnowLoadnumber · min: 0Ground snow load (psf)
roughnessCategorystring · enumGround surface roughness
Enum values:BCDAbove tree lineAlaska no treesroofSurfacestring · enumRoof surface type
Enum values:Slippery surfacesObstructed or non-slippery surfacesroofInsulationRValuenumber · min: 0Roof insulation R-value (ASCE 7-22 only)
widthFactornumber · min: 0 · max: 1Width factor W2 (ASCE 7-22 only)
lowerRoofDriftsarray[]Lower roof drift configurations
projectionDriftsarray[]Projection drift configurations
commentsstringOptional notes or comments
SheetCreateResponse
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.
SheetDetailResponse
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. Numbers read back as strings and booleans as
"1"/"0". Anenumfield reads back as its option label, as a string — the label listed in that field'soptionsonGET /v1/templates/{code}— so a value you read can be displayed as-is or sent straight back in aPATCH. A value matching no option, such as a formula like=projectDefault(...), is returned unchanged. A field whoseoptionsare numbers reads back as the string of that number (2.8publishes,"2.8"reads back), and accepts either form.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 reference IDs the template schema lists in
outputs[]. A given solve returns the subset of those that apply to the inputs you sent. Present when solved.
SheetUpdateResponse
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.
SheetSolveResponse
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 reference IDs the template schema lists in
outputs[]. A given solve returns the subset of those that apply to the inputs you sent.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.