API: axial capacity & settlement

POST /v1/axial — request and response fields for NAVFAC capacity and the load–settlement curve, with runnable examples.


Computes single-pile axial capacity and settlement: side friction and end bearing by the NAVFAC DM-7.02 static method, elastic + Vesić settlement, and the full load–settlement curve so capacity can also be read off at a settlement limit. Compression, uplift, and downdrag are all reported. The method and every input are explained in Axial capacity & settlement; the same analysis runs interactively at the axial tool.

Endpoint

POST
https://api.pilecalc.com/v1/axial
GET
/v1/axial?key=…&req=…&fields=…(for header-less callers)

The request takes a pile (uniform or sectioned, with elasticModulus and unitWeight; displacement: true for driven displacement piles) and a soil profile of layers typed cohesive / cohesionless / rock. Each layer must carry the strength parameter its type uses — cohesion (or qu) for cohesive, phi for cohesionless, qu plus an explicit rockJointCondition for rock. Jointed rock also requires rqd from 20 through 100 and is rejected at the pile tip until a compatible base method is released. Factors of safety, transfer discretization, method, and an unfactored serviceLoad are explicit. If a water table is present,waterUnitWeight is required; there are no hidden water or numerical defaults.

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
unitSystem"si" | "us"yes
method"navfac-dm7-reese-oneill"yes
pileobjectyes
pile.kind = "uniform"variantno
pile.lengthnumberyes> 0
pile.diameternumberyes> 0
pile.tipAreanumberno> 0
pile.batterDegnumberno0 – 45
pile.elasticModulusnumberyes> 0
pile.unitWeightnumberyes≥ 0
pile.displacementbooleanno
pile.deltaDegnumberno0 – 60
pile.frictionFactornumberno> 0
pile.kind = "sectioned"variantyes
pile.sections[]object[]yesmin 1 item
pile.sections[].topnumberyes≥ 0
pile.sections[].bottomnumberyes> 0
pile.sections[].diameternumberyes> 0
pile.sections[].perimeternumberno> 0
pile.sections[].areanumberno> 0
pile.tipAreanumberno> 0
pile.batterDegnumberno0 – 45
pile.elasticModulusnumberyes> 0
pile.unitWeightnumberyes≥ 0
pile.displacementbooleanno
pile.deltaDegnumberno0 – 60
pile.frictionFactornumberno> 0
soilobjectyes
soil.layers[]object[]yesmin 1 item
soil.layers[].topnumberyes≥ 0
soil.layers[].bottomnumberyes> 0
soil.layers[].gammanumberyes> 0
soil.layers[].type"cohesive" | "cohesionless" | "rock"yes
soil.layers[].cohesionnumberno≥ 0
soil.layers[].phinumberno0 – 60
soil.layers[].sptNnumberno≥ 0
soil.layers[].qunumberno≥ 0
soil.layers[].rockJointCondition"massive-intact" | "closed" | "open-or-gouge-filled"no
soil.layers[].rqdnumberno0 – 100
soil.layers[].kDownnumberno> 0
soil.layers[].kUpnumberno> 0
soil.layers[].kcnumberno> 0
soil.layers[].kanumberno> 0
soil.waterTableDepthnumberno≥ 0
soil.waterUnitWeightnumberno> 0
serviceLoadnumberyes> 0
segmentsnumberyesinteger, 20 – 500
penetrationRatioSidenumberyes> 0
penetrationRatioTipnumberyes> 0
kDownnumberyes> 0
kUpnumberyes> 0
fsTipnumberyes> 0
fsSidenumberyes> 0
fsWeightnumberyes> 0
fsUpliftnumberyes> 0
allowableSettlementnumberno> 0
loadSettlementPointsnumberyesinteger, 20 – 500
maxTipSettlementnumberyes> 0
convergenceTolerancenumberyes0 – 0.1

Response fields

FieldTypeDescription
capacity.tipnumberUltimate end-bearing capacity (kN).
capacity.sidenumberUltimate side (skin) friction in compression (kN).
capacity.ultimateDownnumberUltimate downward capacity: tip + side (kN).
capacity.allowableDownnumberAllowable downward capacity after fsTip / fsSide (kN).
capacity.weightnumberPile self-weight (kN); credited to uplift.
capacity.sideUpliftnumberUltimate side friction in uplift (kN).
capacity.ultimateUpliftnumberUltimate uplift capacity: side uplift + weight (kN).
capacity.allowableUpliftnumberAllowable uplift capacity after fsUplift / fsWeight (kN).
capacity.downdragnumberNegative skin friction (downdrag) from settling layers (kN).
capacity.tipPressurenumberUltimate unit tip bearing pressure (kPa).
capacity.segments[]object[]Depth-wise breakdown of side resistance, one entry per pile segment.
capacity.segments[].depth / .lengthnumberSegment top depth and length (m).
capacity.segments[].sideDown / .sideUpnumberSegment side resistance in compression / uplift (kN).
capacity.segments[].negativenumberSegment downdrag contribution (kN).
settlement.shaftnumberElastic shortening of the pile shaft (m).
settlement.pointnumberTip settlement from load at the point (Vesić) (m).
settlement.shaftTransmittednumberTip settlement from load transmitted along the shaft (m).
settlement.totalnumberVesić estimate at fully mobilized resistance (m); the service-load settlement is service.settlement.
loadSettlement[]object[]The load–settlement curve (t-z style mobilization).
loadSettlement[].settlementnumberHead settlement (m).
loadSettlement[].load / .sideLoad / .tipLoadnumberTotal, side, and tip load mobilized at that settlement (kN).
capacityAtSettlementnumber?Load at the requested allowableSettlement (kN). Present only when allowableSettlement was supplied.
service.load / .settlementnumberDeclared unfactored service load and solved head settlement.
service.sideLoad / .tipLoadnumberSide and tip load carried at the service state.
service.relativeLoadResidualnumberRelative service-load residual from the converged bisection.
convergenceobjectFine-versus-half-mesh resistance and service-settlement check; responses fail closed if it exceeds the request tolerance.
methodobjectExact method ID, editions, transfer basis, and tip-interface convention.

Code examples

A complete, runnable request. Replace YOUR_API_KEY (or set PILECALC_API_KEY in your environment).

POST /v1/axial
curl https://api.pilecalc.com/v1/axial \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "unitSystem": "si",
  "method": "navfac-dm7-reese-oneill",
  "pile": {
    "kind": "uniform",
    "length": 18,
    "diameter": 0.61,
    "elasticModulus": 30000000,
    "unitWeight": 24,
    "displacement": true
  },
  "soil": {
    "layers": [
      {
        "type": "cohesive",
        "top": 0,
        "bottom": 6,
        "gamma": 17.5,
        "cohesion": 45
      },
      {
        "type": "cohesionless",
        "top": 6,
        "bottom": 13,
        "gamma": 19,
        "phi": 34
      },
      {
        "type": "rock",
        "top": 13,
        "bottom": 18,
        "gamma": 22,
        "qu": 4500,
        "rockJointCondition": "massive-intact"
      }
    ],
    "waterTableDepth": 3,
    "waterUnitWeight": 9.81
  },
  "serviceLoad": 1000,
  "segments": 240,
  "penetrationRatioSide": 20,
  "penetrationRatioTip": 20,
  "kDown": 1,
  "kUp": 1,
  "fsTip": 3,
  "fsSide": 2,
  "fsWeight": 1.5,
  "fsUplift": 3,
  "allowableSettlement": 0.012,
  "loadSettlementPoints": 160,
  "maxTipSettlement": 0.08,
  "convergenceTolerance": 0.05
}'

The GET variant returns capacity.allowableDown,service.settlement,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.

Interpreting results

  • allowableDown is the design number for compression; allowableUplift for tension. The segments array shows where the side resistance comes from, layer by layer.
  • service.settlement is the serviceability result at the exact serviceLoad you supply. settlement.total is the Vesić estimate at fully mobilized resistance, and loadSettlement is the plotted transfer curve.
  • Downdrag (capacity.downdrag) is reported separately — subtract it from capacity per your code's load-combination rules rather than assuming the API did.

The water-unit-weight trap

With a water table, effective stresses depend on soil.waterUnitWeight — pass 9.81 for the SI bundle or 0.0624 for the US kip–foot bundle (see Units & conventions).