API: torsional load transfer
POST /v1/torsion — strict named capacity, calibrated monotonic transfer, service state, convergence, and applicability fields.
Computes named Florida District 7 or CDOT drilled-shaft torsional capacity plus a user-calibrated monotonic torque–rotation and depth-transfer response. The scientific basis is described in Torsional load transfer; the same analysis runs interactively at the torsion tool.
Endpoint
https://api.pilecalc.com/v1/torsion/v1/torsion?key=…&req=…&fields=…(for header-less callers)Set unitSystem explicitly. pile must describe a vertical, prismatic solid-circular drilled shaft with both E and G. Select the namedmethod, declare whether toe transfer is included, and provide a positiverotation50 for every soil layer and included toe. calibration must identify the evidence reference and maximum supported rotation; the requested curve may not extend beyond it. With groundwater,waterUnitWeight is mandatory.
Authentication, rate limits, and the error envelope are shared by every endpoint — see the API overview. Requests are unit-agnostic: any self-consistent unit system works, and results come back in the same units. The examples below use SI (m, kN, kPa, kN/m³).
Request fields
This table is generated from the same schema that validates the request, so it cannot drift. Where a field appears once per variant row, it belongs to that variant only.
| Field | Type | Required | Constraints |
|---|---|---|---|
unitSystem | "si" | "us" | yes | |
method | "florida-district-7" | "cdot-2004" | yes | |
transferModel | "user-calibrated-hyperbolic" | yes | |
interactionModel | "none" | "florida-district-7-toe-normal-force-only" | yes | |
pile | object | yes | |
pile.kind | "uniform" | yes | |
pile.length | number | yes | > 0 |
pile.diameter | number | yes | > 0 |
pile.elasticModulus | number | yes | > 0 |
pile.shearModulus | number | yes | > 0 |
pile.unitWeight | number | yes | ≥ 0 |
pile.displacement | false | yes | |
soil | object | yes | |
soil.layers[] | object[] | yes | min 1 item |
soil.layers[].type = "cohesive" | variant | yes | |
soil.layers[].top | number | yes | ≥ 0 |
soil.layers[].bottom | number | yes | > 0 |
soil.layers[].gamma | number | yes | > 0 |
soil.layers[].cohesion | number | no | ≥ 0 |
soil.layers[].qu | number | no | ≥ 0 |
soil.layers[].rotation50 | number | yes | > 0 |
soil.layers[].type = "cohesionless" | variant | yes | |
soil.layers[].top | number | yes | ≥ 0 |
soil.layers[].bottom | number | yes | > 0 |
soil.layers[].gamma | number | yes | > 0 |
soil.layers[].phi | number | yes | 0 – 60 |
soil.layers[].rotation50 | number | yes | > 0 |
soil.layers[].lateralEarthPressureCoefficient | number | no | > 0 |
soil.waterTableDepth | number | no | ≥ 0 |
soil.waterUnitWeight | number | no | > 0 |
toe | object | yes | |
toe.mode = "excluded" | variant | yes | |
toe.mode = "included" | variant | yes | |
toe.rotation50 | number | yes | > 0 |
calibration | object | yes | |
calibration.reference | string | yes | |
calibration.maxRotation | number | yes | 0 – 0.2617993877991494 |
loading | object | yes | |
loading.type | "monotonic" | yes | |
loading.serviceTorque | number | yes | > 0 |
loading.torqueStep | number | yes | > 0 |
loading.maxRotation | number | yes | 0 – 0.2617993877991494 |
loading.rotationPoints | number | yes | integer, 21 – 201 |
appliedAxialLoad | number | yes | ≥ 0 |
factorOfSafety | number | yes | > 1 |
segments | number | yes | integer, 200 – 500 |
convergenceTolerance | number | yes | 0 – 0.03 |
Response fields
| Field | Type | Description |
|---|---|---|
capacity.shaft / .toe / .total | number | Named ultimate shaft and toe components and their exact sum (moment units declared by unitSystem). |
capacity.allowable | number | Total ultimate resistance divided by factorOfSafety. |
capacity.legacyShaftSideComponent | number | Legacy ΣQside·r comparison component only; not total resistance. |
capacity.segments | array | Depth intervals, layer index, ultimate interface resistance, side torque, and surface-exclusion flag. |
service | object | Service torque and rotation, shaft/toe shares, secant stiffness, centered tangent stiffness, and tangent bracket. |
curve | array | Strictly monotonic head torque–rotation points through the declared maximum rotation. |
depthTransfer | array | Service-state rotation and internal torque from pile head to toe. |
equilibrium | object | Head/shaft/toe torque balance and service-load residuals. |
convergence | object | Fine and half-resolution meshes plus capacity, response, rotation, and tangent-stiffness differences. |
applicability | object | Explicit monotonic/calibrated scope and the cyclic and axial-interaction exclusions. |
calibrationEvidence | object | Echoed project calibration reference, supported maximum rotation, and a false extrapolation flag. |
method | object | Stable method ID, FHWA edition, named capacity methods, response-model scope, and validation status. |
Code examples
A complete, runnable request. Replace YOUR_API_KEY (or set PILECALC_API_KEY in your environment).
curl https://api.pilecalc.com/v1/torsion \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"unitSystem": "si",
"method": "florida-district-7",
"transferModel": "user-calibrated-hyperbolic",
"interactionModel": "none",
"pile": {
"kind": "uniform",
"length": 6,
"diameter": 1,
"elasticModulus": 30000000,
"shearModulus": 12500000,
"unitWeight": 24,
"displacement": false
},
"soil": {
"layers": [
{
"type": "cohesive",
"top": 0,
"bottom": 7,
"gamma": 18,
"cohesion": 50,
"rotation50": 0.01
}
]
},
"toe": {
"mode": "excluded"
},
"calibration": {
"reference": "Example only - replace with a project monotonic torsion test reference",
"maxRotation": 0.08
},
"loading": {
"type": "monotonic",
"serviceTorque": 100,
"torqueStep": 1,
"maxRotation": 0.08,
"rotationPoints": 41
},
"appliedAxialLoad": 0,
"factorOfSafety": 3,
"segments": 240,
"convergenceTolerance": 0.02
}'The GET variant returns capacity.total,capacity.allowable,service.rotation,service.tangentStiffness,equilibrium.relativeResidual as a plain-text CSV line — made for Excel's WEBSERVICE() and Sheets' IMPORTDATA() (see Use PileCalc in Excel). Omit fields to get the full JSON response.
Interpreting results
capacity.totalis exactly shaft plus toe. The legacy side-friction-times-radius field is a comparison component and must not replace total.service.secantStiffnessreproduces the origin-to-service response;service.tangentStiffnessis the centered local slope about that torque.- A response exists only when the service torque is bracketed, equilibrium closes, and all four fine/half-resolution comparisons pass the requested tolerance.
- Nonzero axial load is legal only for the Florida District 7 cohesionless-toe normal-force term. The response does not represent generalized axial–torsional interaction.
Unsupported requests fail closed