API: uplift plates & anchors
POST /v1/uplift — request and response fields for plate breakout and anchor bond capacity, with runnable examples.
Runs either the strict Meyerhof–Adams/Das plate-breakout branch or the FHWA GEC 4 straight-shaft ground-anchor branch. The complete scientific scope and applicability limits are documented at Uplift plates & ground anchors.
Endpoint
https://api.pilecalc.com/v1/uplift/v1/uplift?key=…&req=…&fields=…(for header-less callers)The request is a union on kind. Both branches requireunitSystem, an exact method ID, and an explicitdesign basis.
platerequires an explicit circular or rectangularshape, orderedlayers, explicitgroundwaterstate, plate weight, and uplift coefficient.anchorrequires complete unbonded/bond geometry, traceable per-length bond transfer, efficiency and reference, tendon SMTS/EA, independent tendon-grout capacity, design and lock-off loads, and a production-test record or explicitnot-testedstate.
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 |
|---|---|---|---|
kind = "plate" | variant | yes | |
unitSystem | "si" | "us" | yes | |
method | "method.uplift.meyerhof-adams-plate" | yes | |
shape | object | yes | |
shape.kind = "circular" | variant | yes | |
shape.diameter | number | yes | > 0 |
shape.kind = "rectangular" | variant | yes | |
shape.width | number | yes | > 0 |
shape.length | number | yes | > 0 |
embedment | number | yes | > 0 |
layers[] | object[] | yes | min 1 item |
layers[].type = "cohesionless" | variant | yes | |
layers[].top | number | yes | ≥ 0 |
layers[].bottom | number | yes | > 0 |
layers[].gamma | number | yes | > 0 |
layers[].phi | number | yes | 20 – 45 |
layers[].type = "cohesive" | variant | yes | |
layers[].top | number | yes | ≥ 0 |
layers[].bottom | number | yes | > 0 |
layers[].gamma | number | yes | > 0 |
layers[].cohesion | number | yes | > 0 |
groundwater | object | yes | |
groundwater.mode = "dry" | variant | yes | |
groundwater.mode = "hydrostatic" | variant | yes | |
groundwater.waterTableDepth | number | yes | ≥ 0 |
groundwater.waterUnitWeight | number | yes | > 0 |
plateWeight | number | yes | ≥ 0 |
upliftCoefficient | number | yes | > 0 |
design | object | yes | |
design.basis = "asd" | variant | yes | |
design.factorOfSafety | number | yes | > 1 |
design.basis = "lrfd" | variant | yes | |
design.resistanceFactor | number | yes | 0 – 1 |
design.factorReference | string | yes | |
kind = "anchor" | variant | yes | |
unitSystem | "si" | "us" | yes | |
method | "method.uplift.fhwa-gec4-ground-anchor" | yes | |
groutDiameter | number | yes | > 0 |
unbondedLength | number | yes | > 0 |
bondedLength | number | yes | > 0 |
bondZoneCenterDepth | number | yes | > 0 |
inclination | number | yes | 10 – 45 |
bondLayers[] | object[] | yes | min 1 item |
bondLayers[].top | number | yes | ≥ 0 |
bondLayers[].bottom | number | yes | > 0 |
bondLayers[].groundType | "soil" | "intermediate-geomaterial" | "competent-rock" | yes | |
bondLayers[].ultimateTransferLoad | number | yes | > 0 |
bondLayers[].transferReference | string | yes | |
bondEfficiency | object | yes | |
bondEfficiency.factor | number | yes | 0 – 1 |
bondEfficiency.reference | string | yes | |
tendon | object | yes | |
tendon.type | "bar" | "strand" | yes | |
tendon.smts | number | yes | > 0 |
tendon.axialRigidity | number | yes | > 0 |
tendonGroutBondCapacity | number | yes | > 0 |
tendonGroutBondReference | string | yes | |
groutCompressiveStrength | number | yes | > 0 |
designLoad | number | yes | > 0 |
lockOffLoad | number | yes | ≥ 0 |
application | "temporary" | "permanent" | "creep-susceptible-permanent" | yes | |
design | object | yes | |
design.basis = "asd" | variant | yes | |
design.factorOfSafety | number | yes | > 1 |
design.basis = "lrfd" | variant | yes | |
design.resistanceFactor | number | yes | 0 – 1 |
design.factorReference | string | yes | |
testing | object | yes | |
testing.kind = "not-tested" | variant | yes | |
testing.kind = undefined | variant | yes | |
testing.alignmentLoad | number | yes | ≥ 0 |
testing.maximumTestLoad | number | yes | > 0 |
testing.movementAt1Minute | number | yes | ≥ 0 |
testing.movementAt10Minutes | number | yes | ≥ 0 |
testing.movementAt6Minutes | number | no | ≥ 0 |
testing.movementAt60Minutes | number | no | ≥ 0 |
testing.elasticMovement | number | yes | > 0 |
testing.jackLength | number | yes | ≥ 0 |
Response fields
| Field | Type | Description |
|---|---|---|
kind | "plate" | "anchor" | The analyzed mechanism. |
nominalResistance | number | Minimum declared nominal resistance in request force units. |
designResistance | number | Resistance after the explicit ASD or LRFD basis. |
method.id | string | Exact method ID returned by the executed branch. |
method.edition | string | Published method edition/source designation. |
method.status | "validated" | Validation status of the executed method. |
ultimateUplift | number? | Plate-only migration alias exactly equal to nominalResistance. |
geometry | object? | Plate-only explicit area, perimeter, 4A/P width, and aspect ratio. |
groundwater | object? | Plate-only hydrostatic state and integrated effective overburden. |
layeredEnvelope | object? | Plate-only governing layer, strength, and layer count. |
failureSurface | object? | Plate-only shallow/deep mechanism and mobilized geometry. |
capacity | object? | Anchor-only ground-grout, tendon rupture, and tendon-grout capacities. |
governingFailureMode | string? | Anchor-only governing named design mode. |
demandCapacityRatio | number? | Anchor design load divided by governing design resistance. |
tendonLimits | object? | Anchor-only FHWA 60/70/80% SMTS checks. |
testing | object? | Anchor-only test multiplier, creep, apparent free length, and acceptance-screen details. |
limitations | object? | Anchor-only mandatory production-test and group-interaction limitations. |
scientificMetadata | object | Immutable engine, schema, manifest, unit, analysis, and primary-method provenance. |
Code examples
A complete, runnable request. Replace YOUR_API_KEY (or set PILECALC_API_KEY in your environment).
curl https://api.pilecalc.com/v1/uplift \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"unitSystem": "si",
"kind": "plate",
"method": "method.uplift.meyerhof-adams-plate",
"shape": {
"kind": "rectangular",
"width": 1.2,
"length": 2.4
},
"embedment": 3,
"layers": [
{
"type": "cohesionless",
"top": 0,
"bottom": 1.5,
"gamma": 18,
"phi": 34
},
{
"type": "cohesionless",
"top": 1.5,
"bottom": 3,
"gamma": 19,
"phi": 31
}
],
"groundwater": {
"mode": "hydrostatic",
"waterTableDepth": 1,
"waterUnitWeight": 9.81
},
"plateWeight": 4.5,
"upliftCoefficient": 0.9,
"design": {
"basis": "asd",
"factorOfSafety": 2
}
}'The GET variant returns nominalResistance,designResistance,method.id 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.
Safety and migration
- The former
width + area + soilTypeplate payload andgroutDiameter + bondedLength + adhesionanchor payload are rejected. They cannot identify plan geometry, units, groundwater, structural failure modes, or test status. - There are no hidden water-unit-weight, plate-weight, bond-efficiency, or design-factor defaults.
nominalResistanceanddesignResistanceare distinct. Do not apply a second factor to the design result.- An anchor with
testing.kind = "not-tested"returnsdesign-only-not-tested; it is not accepted for service. - GET/Excel requests carry the identical JSON payload in
req; response projection always retains mandatory scientific provenance fields.