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

POST
https://api.pilecalc.com/v1/uplift
GET
/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.

  • plate requires an explicit circular or rectangular shape, ordered layers, explicit groundwater state, plate weight, and uplift coefficient.
  • anchor requires 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-tested state.

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.

FieldTypeRequiredConstraints
kind = "plate"variantyes
unitSystem"si" | "us"yes
method"method.uplift.meyerhof-adams-plate"yes
shapeobjectyes
shape.kind = "circular"variantyes
shape.diameternumberyes> 0
shape.kind = "rectangular"variantyes
shape.widthnumberyes> 0
shape.lengthnumberyes> 0
embedmentnumberyes> 0
layers[]object[]yesmin 1 item
layers[].type = "cohesionless"variantyes
layers[].topnumberyes≥ 0
layers[].bottomnumberyes> 0
layers[].gammanumberyes> 0
layers[].phinumberyes20 – 45
layers[].type = "cohesive"variantyes
layers[].topnumberyes≥ 0
layers[].bottomnumberyes> 0
layers[].gammanumberyes> 0
layers[].cohesionnumberyes> 0
groundwaterobjectyes
groundwater.mode = "dry"variantyes
groundwater.mode = "hydrostatic"variantyes
groundwater.waterTableDepthnumberyes≥ 0
groundwater.waterUnitWeightnumberyes> 0
plateWeightnumberyes≥ 0
upliftCoefficientnumberyes> 0
designobjectyes
design.basis = "asd"variantyes
design.factorOfSafetynumberyes> 1
design.basis = "lrfd"variantyes
design.resistanceFactornumberyes0 – 1
design.factorReferencestringyes
kind = "anchor"variantyes
unitSystem"si" | "us"yes
method"method.uplift.fhwa-gec4-ground-anchor"yes
groutDiameternumberyes> 0
unbondedLengthnumberyes> 0
bondedLengthnumberyes> 0
bondZoneCenterDepthnumberyes> 0
inclinationnumberyes10 – 45
bondLayers[]object[]yesmin 1 item
bondLayers[].topnumberyes≥ 0
bondLayers[].bottomnumberyes> 0
bondLayers[].groundType"soil" | "intermediate-geomaterial" | "competent-rock"yes
bondLayers[].ultimateTransferLoadnumberyes> 0
bondLayers[].transferReferencestringyes
bondEfficiencyobjectyes
bondEfficiency.factornumberyes0 – 1
bondEfficiency.referencestringyes
tendonobjectyes
tendon.type"bar" | "strand"yes
tendon.smtsnumberyes> 0
tendon.axialRigiditynumberyes> 0
tendonGroutBondCapacitynumberyes> 0
tendonGroutBondReferencestringyes
groutCompressiveStrengthnumberyes> 0
designLoadnumberyes> 0
lockOffLoadnumberyes≥ 0
application"temporary" | "permanent" | "creep-susceptible-permanent"yes
designobjectyes
design.basis = "asd"variantyes
design.factorOfSafetynumberyes> 1
design.basis = "lrfd"variantyes
design.resistanceFactornumberyes0 – 1
design.factorReferencestringyes
testingobjectyes
testing.kind = "not-tested"variantyes
testing.kind = undefinedvariantyes
testing.alignmentLoadnumberyes≥ 0
testing.maximumTestLoadnumberyes> 0
testing.movementAt1Minutenumberyes≥ 0
testing.movementAt10Minutesnumberyes≥ 0
testing.movementAt6Minutesnumberno≥ 0
testing.movementAt60Minutesnumberno≥ 0
testing.elasticMovementnumberyes> 0
testing.jackLengthnumberyes≥ 0

Response fields

FieldTypeDescription
kind"plate" | "anchor"The analyzed mechanism.
nominalResistancenumberMinimum declared nominal resistance in request force units.
designResistancenumberResistance after the explicit ASD or LRFD basis.
method.idstringExact method ID returned by the executed branch.
method.editionstringPublished method edition/source designation.
method.status"validated"Validation status of the executed method.
ultimateUpliftnumber?Plate-only migration alias exactly equal to nominalResistance.
geometryobject?Plate-only explicit area, perimeter, 4A/P width, and aspect ratio.
groundwaterobject?Plate-only hydrostatic state and integrated effective overburden.
layeredEnvelopeobject?Plate-only governing layer, strength, and layer count.
failureSurfaceobject?Plate-only shallow/deep mechanism and mobilized geometry.
capacityobject?Anchor-only ground-grout, tendon rupture, and tendon-grout capacities.
governingFailureModestring?Anchor-only governing named design mode.
demandCapacityRationumber?Anchor design load divided by governing design resistance.
tendonLimitsobject?Anchor-only FHWA 60/70/80% SMTS checks.
testingobject?Anchor-only test multiplier, creep, apparent free length, and acceptance-screen details.
limitationsobject?Anchor-only mandatory production-test and group-interaction limitations.
scientificMetadataobjectImmutable 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).

POST /v1/uplift
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 + soilType plate payload andgroutDiameter + bondedLength + adhesion anchor 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.
  • nominalResistance and designResistance are 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.