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, ordered uniform-strengthlayers, explicitgroundwaterstate, effective plate weight (net of buoyancy where applicable), 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 |
testing.extendedCreepCycles[] | object[] | no | max 6 items |
testing.extendedCreepCycles[].load | number | yes | > 0 |
testing.extendedCreepCycles[].targetPressure | number | yes | > 0 |
testing.extendedCreepCycles[].readings[] | object[] | yes | max 200 items |
testing.extendedCreepCycles[].readings[].timeMinutes | number | yes | > 0 |
testing.extendedCreepCycles[].readings[].movement | number | yes | ≥ 0 |
testing.extendedCreepCycles[].readings[].pressure | number | yes | > 0 |
Response fields
| Field | Type | Description |
|---|---|---|
testing.creep.extendedCycles[] | object[]? | Per-hold final-log-cycle movement, observed pressure deviation, load and acceptance reasons for permanent extended-creep records. |
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, physical short-side width (diameter for a circle), 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": 31
},
{
"type": "cohesionless",
"top": 1.5,
"bottom": 3,
"gamma": 18,
"phi": 31
}
],
"groundwater": {
"mode": "dry"
},
"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.
For extended-creep, supply testing.extendedCreepCycles: six ordered objects containing load, targetPressure, andreadings of timeMinutes, movement and pressure. Use coherent request units: metres and kPa, or feet and ksf; time is always minutes. GEC 4 Table 23 observation times must be complete. The existing scalar one/ten-minute fields remain required for compatibility but do not qualify an extended-creep record. The declared maximum must equal the highest recorded load. These are supplied-record checks, not verification of instrument calibration, the unloading sequence or project sampling.
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. - Plate strength must be uniform. Sand additionally requires uniform unit weight and dry, fully submerged, or water-table-at/below-plate conditions. Clay permits variable unit weight and an internal water table in the integrated soil-weight term. 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.