API: drilled shaft

POST /v1/drilled-shaft — request and response fields for FHWA-IF-99-025 shaft capacity, with runnable examples.


Computes the axial capacity of a drilled shaft (bored pile / caisson) with the FHWA method of O'Neill & Reese (FHWA-IF-99-025, 1999): α-method side resistance in clay, β-method (SPT-based) in sand, rock-socket resistance in rock, base bearing, belled-base uplift, and optional service-load settlement. The method and every input are explained in Drilled shafts; the same analysis runs interactively at the drilled-shaft tool.

Endpoint

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

The request mirrors the axial endpoint — a pile and a layered soil profile — and requires an explicitmethod, constructionMethod, and analysisMode. The released slice is fhwa-if-99-025 for a dry-stable-open-hole shaft. Cohesionless layers require sptN (the SPT blow count that drives the β correlation), not phi. Cohesive layers need cohesion (or qu); rock needs qu. Add bellDiameter and bellHeight together for a belled base. Rock layers require an explicit rockJointCondition; jointed layers also requirerqd from 20 through 100, and jointed rock at the base is rejected. Service mode also requires an explicit service load and numerical controls.

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"fhwa-if-99-025"yes
constructionMethod"dry-stable-open-hole"yes
analysisMode"capacity-only" | "capacity-and-service"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
segmentsnumberyesinteger, 20 – 500
bellDiameternumberno> 0
bellHeightnumberno> 0
fsTipnumberyes> 0
fsSidenumberyes> 0
fsWeightnumberyes> 0
fsUpliftnumberyes> 0
serviceLoadnumberno> 0
loadSettlementPointsnumbernointeger, 20 – 500
maxTipSettlementnumberno> 0
convergenceTolerancenumberyes0 – 0.1

Response fields

FieldTypeDescription
tipnumberUltimate base (end-bearing) resistance (kN); on the bell area when bellDiameter is given.
sidenumberUltimate side resistance in compression (kN) — α method in clay, β/SPT in sand, rock-socket in rock.
ultimateDownnumberUltimate downward capacity: tip + side (kN).
allowableDownnumberAllowable downward capacity after fsTip / fsSide (kN).
weightnumberShaft self-weight (kN); credited to uplift.
sideUpliftnumberUltimate side resistance in uplift (kN).
bellUpliftnumberBell (belled-base) bearing contribution to uplift (kN); 0 without a bell.
ultimateUpliftnumberUltimate uplift capacity: side uplift + bell + weight (kN).
allowableUpliftnumberAllowable uplift capacity after fsUplift (kN).
tipPressurenumberUltimate unit base pressure (kPa).
segments[]object[]Layer-integrated side-transfer trace used to reproduce the capacity totals.
serviceobject | undefinedSettlement at the explicit serviceLoad, including head/tip movement, load residual, and convergence state.
convergenceobjectMandatory fine/coarse mesh comparison; the request fails if a released scalar exceeds convergenceTolerance.
methodobjectStable method ID, source edition, supported construction method, and tip-interface convention.

Code examples

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

POST /v1/drilled-shaft
curl https://api.pilecalc.com/v1/drilled-shaft \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "unitSystem": "si",
  "method": "fhwa-if-99-025",
  "constructionMethod": "dry-stable-open-hole",
  "analysisMode": "capacity-and-service",
  "pile": {
    "kind": "uniform",
    "length": 22,
    "diameter": 0.9,
    "elasticModulus": 28000000,
    "unitWeight": 24
  },
  "soil": {
    "layers": [
      {
        "type": "cohesive",
        "top": 0,
        "bottom": 8,
        "gamma": 18,
        "cohesion": 60
      },
      {
        "type": "cohesionless",
        "top": 8,
        "bottom": 16,
        "gamma": 19.5,
        "sptN": 28
      },
      {
        "type": "cohesive",
        "top": 16,
        "bottom": 24,
        "gamma": 19,
        "cohesion": 120
      }
    ],
    "waterTableDepth": 4,
    "waterUnitWeight": 9.81
  },
  "serviceLoad": 1000,
  "segments": 240,
  "loadSettlementPoints": 160,
  "maxTipSettlement": 0.12,
  "bellDiameter": 1.8,
  "bellHeight": 0.45,
  "fsTip": 2.5,
  "fsSide": 2,
  "fsWeight": 1.5,
  "fsUplift": 2.5,
  "convergenceTolerance": 0.05
}'

The GET variant returns allowableDown,allowableUplift,service.settlement 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 applies fsTip and fsSide separately (side resistance mobilizes at much smaller displacement than base bearing).
  • With a bell, tip and tipPressure are computed on the bell base area, and bellUplift adds the inverted-bearing uplift contribution.
  • The FHWA five-foot top exclusion is applied only for surface clay; the bottom one-diameter (plus bell-height) exclusion is applied only for cohesive base soil.
  • service is a t-z/q-z load-transfer result at serviceLoad, not an ultimate-capacity settlement estimate. Rock-socket service response remains disabled until a named public rock load-transfer method is implemented.
  • The bearing stratum is the layer immediately below a tip interface. The response records that convention and the fine/coarse convergence check. Jointed-rock side resistance uses the declared Table 11.4 column, but jointed-rock base resistance fails closed.

unitSystem

The FHWA correlations for sand are dimensional. Use "si" for metres, kN, kPa, and kN/m³ or "us" for feet, kip, ksf, and kip/ft³. When a water table is supplied, waterUnitWeight is also required; hidden groundwater defaults are not accepted.