API: downdrag

POST /v1/downdrag — request and response fields for the neutral-plane downdrag analysis, with runnable examples.


Analyses downdrag (negative skin friction) by the neutral-plane (unified) method — Fellenius, as adopted by FHWA GEC-12 §7.3: a t-z load-transfer solve driven by an imposed free-field settlement profile. The method and inputs are explained in Downdrag; the same analysis runs interactively at the downdrag tool.

Endpoint

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

The request takes the same pile and soil objects as /v1/axial, explicit permanent service and strength-factor objects, and either a measured prescribed-linear settlement profile or explicit one-dimensional-consolidation layers. The transfer model, fine mesh, iteration limit, and refinement tolerance are all required.

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"yesUnit bundle for every dimensional input and output. "si": m, kN, kPa, kN/m³, kN·m, kN·m². "us": the kip–foot bundle — ft, kip, ksf, kip/ft³, kip·ft, kip·ft² (unit weights in kip/ft³, not pcf). Values are not converted, so every field must use the declared bundle.
method"fhwa-gec12-neutral-plane"yesMethod identifier: FHWA GEC 12 neutral-plane (unified) downdrag analysis.
pileobjectyesThe pile: uniform or sectioned geometry plus material properties. Must be vertical (batterDeg 0).
pile.kind = "uniform"variantnoPile geometry type: "uniform" is one diameter over the full length (the default).
pile.lengthnumberyes> 0 — Pile length below the pile head (m for si, ft for us).
pile.diameternumberyes> 0 — Pile width or diameter B (m or ft).
pile.tipAreanumberno> 0 — End-bearing (tip) area (length², in the request's unit system). Defaults to π·B²/4 using the tip diameter (a closed circular tip).
pile.batterDegnumberno0 – 45 — Batter angle from vertical in degrees (0–45, default 0). Some analyses (axial, downdrag, drilled shaft) accept vertical piles only.
pile.elasticModulusnumberyes> 0 — Young's modulus E of the pile material (kPa for si, ksf for us); controls elastic shortening under load.
pile.unitWeightnumberyes≥ 0 — Unit weight of the pile material (kN/m³ for si, kip/ft³ for us). Sets the pile self-weight credited to uplift resistance; the buoyant value is used below the water table.
pile.displacementbooleannotrue for a driven displacement pile, false for a drilled/bored (non-displacement) pile. Selects the Nq end-bearing factor and, in the axial service solve, driven (API RP2A) vs bored (Reese–O'Neill) t-z/q-z curves. Omitted means true, except in the drilled-shaft analysis, which rejects true and always treats the shaft as non-displacement.
pile.material"steel" | "concrete" | "timber"noPile material for the NAVFAC DM-7.02 defaults: the interface friction angle δ (Fig. 1 cont., p. 7.2-194: steel 20°, concrete and timber ¾φ) and the clay adhesion C_A (Fig. 2, p. 7.2-196: steel column vs timber-and-concrete column). When omitted, the lower (conservative) table value is used: δ = min(20°, ¾φ) and the steel adhesion column. deltaDeg, frictionFactor and a layer's ka override these defaults. Not accepted by the drilled-shaft method.
pile.deltaDegnumberno0 – 60 — Pile–soil interface friction angle δ in degrees for cohesionless side friction; may not exceed the layer's phi. When omitted, δ = frictionFactor × phi, or the NAVFAC material default (see material) when frictionFactor is also omitted.
pile.frictionFactornumberno0 – 1 — Ratio δ/φ used to derive the interface friction angle when deltaDeg is omitted (0–1). When omitted, the NAVFAC DM-7.02 material default applies (see material).
pile.kind = "sectioned"variantyesPile geometry type: "sectioned" gives the pile as contiguous depth sections with their own diameter, perimeter and area.
pile.sections[]object[]yesmin 1 item — Pile sections ordered from the head down, starting at depth 0 with no gaps or overlaps.
pile.sections[].topnumberyes≥ 0 — Depth to the top of this section below the pile head (m for si, ft for us). The first section starts at 0 and sections must be contiguous.
pile.sections[].bottomnumberyes> 0 — Depth to the bottom of this section below the pile head (m or ft); must exceed top. The last section's bottom is the pile length.
pile.sections[].diameternumberyes> 0 — Section width or diameter B (m or ft).
pile.sections[].perimeternumberno> 0 — Surface perimeter used for side resistance (m or ft). Defaults to π·B (circular).
pile.sections[].areanumberno> 0 — Structural cross-sectional area used for elastic shortening and pile self-weight (length², in the request's unit system). Defaults to π·B²/4.
pile.tipAreanumberno> 0 — End-bearing (tip) area (length², in the request's unit system). Defaults to π·B²/4 using the tip diameter (a closed circular tip).
pile.batterDegnumberno0 – 45 — Batter angle from vertical in degrees (0–45, default 0). Some analyses (axial, downdrag, drilled shaft) accept vertical piles only.
pile.elasticModulusnumberyes> 0 — Young's modulus E of the pile material (kPa for si, ksf for us); controls elastic shortening under load.
pile.unitWeightnumberyes≥ 0 — Unit weight of the pile material (kN/m³ for si, kip/ft³ for us). Sets the pile self-weight credited to uplift resistance; the buoyant value is used below the water table.
pile.displacementbooleannotrue for a driven displacement pile, false for a drilled/bored (non-displacement) pile. Selects the Nq end-bearing factor and, in the axial service solve, driven (API RP2A) vs bored (Reese–O'Neill) t-z/q-z curves. Omitted means true, except in the drilled-shaft analysis, which rejects true and always treats the shaft as non-displacement.
pile.material"steel" | "concrete" | "timber"noPile material for the NAVFAC DM-7.02 defaults: the interface friction angle δ (Fig. 1 cont., p. 7.2-194: steel 20°, concrete and timber ¾φ) and the clay adhesion C_A (Fig. 2, p. 7.2-196: steel column vs timber-and-concrete column). When omitted, the lower (conservative) table value is used: δ = min(20°, ¾φ) and the steel adhesion column. deltaDeg, frictionFactor and a layer's ka override these defaults. Not accepted by the drilled-shaft method.
pile.deltaDegnumberno0 – 60 — Pile–soil interface friction angle δ in degrees for cohesionless side friction; may not exceed the layer's phi. When omitted, δ = frictionFactor × phi, or the NAVFAC material default (see material) when frictionFactor is also omitted.
pile.frictionFactornumberno0 – 1 — Ratio δ/φ used to derive the interface friction angle when deltaDeg is omitted (0–1). When omitted, the NAVFAC DM-7.02 material default applies (see material).
soilobjectyesLayered soil profile with optional water table, covering the full pile length. Cohesionless layers need phi; rock within the pile length is not supported.
soil.layers[]object[]yesmin 1 item — Soil and rock layers ordered from the ground surface down, starting at depth 0 with no gaps or overlaps.
soil.layers[].topnumberyes≥ 0 — Depth to the top of the layer below the ground surface (m for si, ft for us). The first layer starts at 0 and layers must be contiguous.
soil.layers[].bottomnumberyes> 0 — Depth to the bottom of the layer below the ground surface (m or ft); must exceed top. The deepest layer should reach at least the pile tip.
soil.layers[].gammanumberyes> 0 — Total unit weight γ of the layer (kN/m³ for si, kip/ft³ for us); builds the vertical stress profile.
soil.layers[].type"cohesive" | "cohesionless" | "rock"yesBehavioural class that selects the resistance method: cohesive (clay, undrained strength), cohesionless (sand), or rock. It also decides which strength fields are required or allowed.
soil.layers[].cohesionnumberno≥ 0 — Undrained shear strength Su of a cohesive layer (kPa for si, ksf for us). Give exactly one of cohesion or qu for cohesive layers; not allowed on cohesionless or rock layers.
soil.layers[].phinumberno0 – 60 — Drained friction angle φ in degrees (0–60) for cohesionless layers. Required by the axial (NAVFAC) soil profile; in the layer where the pile tip bears it must be 26–40°, the range NAVFAC DM-7.02 tabulates Nq for. NAVFAC's table footnotes (p. 7.2-194) limit φ to 28° for jetted piles, and for drilled-pier end bearing where a bailer or grab bucket is used below groundwater; enter φ accordingly. The drilled-shaft method uses sptN instead and rejects phi.
soil.layers[].sptNnumberno≥ 0 — SPT blow count N (blows per 0.3 m) for cohesionless layers. Required by the drilled-shaft method (0 < N ≤ 50); not accepted by the axial (NAVFAC) soil profile.
soil.layers[].qunumberno≥ 0 — Unconfined compressive strength qu (kPa for si, ksf for us). Required for rock layers; for cohesive layers it is the alternative to cohesion, with Su = qu/2. The axial, capacity-vs-length, downdrag, slope and stiffness analyses reject rock within the pile length (no rock t-z/q-z service curves, and no static method for driven piles in rock, FHWA GEC 12 §7.2.1.4); analyse a cast-in-place rock socket with the drilled-shaft method, which limits qu to the concrete strength f′c (FHWA-IF-99-025 Eq. 11.24).
soil.layers[].rockJointCondition"massive-intact" | "closed" | "open-or-gouge-filled"noRock-mass joint condition from FHWA-IF-99-025 Table 11.4, required on rock layers: massive-intact, closed joints, or open/gouge-filled joints. Jointed conditions reduce socket side resistance by RQD; jointed rock at the pile tip is rejected.
soil.layers[].rqdnumberno0 – 100 — Rock Quality Designation in percent. Required (20–100, the published Table 11.4 range) for closed or open/gouge-filled rock; must be omitted for massive-intact rock.
soil.layers[].kDownnumberno> 0 — Layer override of the lateral earth-pressure ratio K = σ'h/σ'v for downward (compression) side friction in cohesionless layers (NAVFAC method). When omitted, the analysis-level value applies. The drilled-shaft and helical methods do not use it and reject it.
soil.layers[].kUpnumberno> 0 — Layer override of K for uplift side friction (NAVFAC method). When omitted, this layer's kDown is used, then the analysis-level value.
soil.layers[].kcnumberno> 0 — Adhesion factor Kc multiplying cohesive side adhesion (fs = Kc·Ka·Su) in the NAVFAC method; default 1. Not allowed on cohesionless layers, or by the drilled-shaft and helical methods.
soil.layers[].kanumberno> 0 — Adhesion ratio Ka = Ca/Su override for cohesive side friction in the NAVFAC method. When omitted it follows the NAVFAC DM-7.02 Figure 2 recommended-adhesion table (p. 7.2-196) for the pile material: C_A = Su up to 250 psf, then 480/750/950/1300 psf (timber and concrete) or 460/700/720/750 psf (steel, also used when material is omitted) at Su = 500/1000/2000/4000 psf, interpolated between band limits and held above 4000 psf. Not allowed on cohesionless layers.
soil.waterTableDepthnumberno≥ 0 — Depth of the water table below the ground surface (m for si, ft for us). Omit for a dry profile; when given, waterUnitWeight is required.
soil.waterUnitWeightnumberno> 0 — Unit weight of water γw used for pore pressure and buoyancy: 9.81 kN/m³ for si or 0.0624 kip/ft³ for us (never pcf). Required when waterTableDepth is given.
loadsobjectyesPermanent head load and strength load factors.
loads.servicePermanentnumberyes≥ 0 — Permanent (sustained) unfactored axial load at the pile head (kN for si, kip for us). Exclude transient live load.
loads.strengthFactorsobjectyesLoad factors applied to the permanent components to form the strength demand at the neutral plane.
loads.strengthFactors.permanentHeadnumberyes> 0 — Strength load factor on the permanent head load.
loads.strengthFactors.negativeSkinFrictionnumberyes> 0 — Strength load factor on the dragload (negative skin friction above the neutral plane).
loads.strengthFactors.pileSelfWeightnumberyes> 0 — Strength load factor on the effective pile self-weight above the neutral plane.
settlementobjectyesFree-field soil settlement profile that drives negative skin friction: a prescribed linear profile or one-dimensional consolidation layers.
settlement.kind = "prescribed-linear"variantyesFree-field soil settlement varying linearly from `surface` at the ground surface to zero at `zeroDepth`.
settlement.surfacenumberyes≥ 0 — Free-field settlement at the ground surface, downward positive (m for si, ft for us).
settlement.zeroDepthnumberyes> 0 — Depth below the ground surface at which free-field settlement reaches zero (m or ft); may not extend below the pile tip.
settlement.kind = "one-dimensional-consolidation"variantyesFree-field soil settlement computed from explicit one-dimensional e–log p' consolidation layers.
settlement.layers[]object[]yesmin 1 item — Consolidating layers, ordered from the top down and non-overlapping; each layer's settlement also applies to all depths above it.
settlement.layers[].topnumberyes≥ 0 — Depth to the top of the consolidating layer below the ground surface (m for si, ft for us).
settlement.layers[].bottomnumberyes> 0 — Depth to the bottom of the consolidating layer (m or ft); must exceed top and may not extend below the pile tip.
settlement.layers[].compressionIndexnumberyes> 0 — Virgin compression index Cc.
settlement.layers[].recompressionIndexnumberyes≥ 0 — Recompression index Cr.
settlement.layers[].initialVoidRationumberyes≥ 0 — Initial void ratio e0.
settlement.layers[].preconsolidationStressnumberyes> 0 — Preconsolidation effective stress p'c (kPa for si, ksf for us).
settlement.layers[].stressIncreasenumberyes≥ 0 — Sustained increase in effective vertical stress at the layer midpoint (kPa for si, ksf for us).
settlement.layers[].degreeOfConsolidationnumberyes0 – 1 — Fraction of ultimate primary consolidation settlement realized, 0–1.
transferModel"reese-oneill-layer-specific-t-z-q-z"yesLoad-transfer model identifier: Reese–O'Neill layer-specific t-z (side) and q-z (base) curves.
numericsobjectyesNumerical controls for the load-transfer solve.
numerics.segmentsnumberyesinteger, 40 – 800 — Number of pile elements in the fine load-transfer mesh (40–800). A half-density mesh is also solved and compared.
numerics.maxIterationsnumberyesinteger, 50 – 5000 — Iteration limit for the nonlinear load-transfer solve (50–5000); the request fails if either mesh does not converge.
numerics.convergenceTolerancenumberyes0 – 0.1 — Largest accepted relative equilibrium residual and fine-versus-half-mesh relative drift (a fraction, at most 0.1); the request fails if either is exceeded.

Response fields

FieldTypeDescription
neutralPlaneDepthnumberDepth of the neutral plane — maximum axial force / zero relative pile-soil movement (m for si, ft for us).
dragloadnumberAccumulated negative skin friction above the neutral plane (kN for si, kip for us).
maxAxialForcenumberPeak internal axial force at the neutral plane: permanent head load + negative skin friction + effective pile self-weight (kN for si, kip for us).
headLoadnumberThe sustained head load the dragload adds to (kN for si, kip for us).
pileSelfWeightAbovenumberEffective pile self-weight above the neutral plane, buoyant below groundwater (kN for si, kip for us).
loadCombinations.service.demandnumberUnfactored permanent structural demand at the neutral plane (kN for si, kip for us).
loadCombinations.strength.demandnumberUser-factorized permanent structural demand at the neutral plane (kN for si, kip for us).
headSettlementnumberPile-head settlement under the imposed profile (m for si, ft for us).
toeSettlementnumberPile-toe settlement (m for si, ft for us).
shaftResistanceBelownumberShaft resistance available below the neutral plane (kN for si, kip for us).
convergenceobjectFine/coarse convergence evidence, refinement drift, iterations, and equilibrium residual.
methodobjectNamed method, edition, layer-specific transfer basis, and tip-interface convention.
profile[]object[]Node-by-node profile from head to toe.
profile[].depthnumberNode depth below the head (m for si, ft for us).
profile[].axialForcenumberInternal axial force at the node, compression + (kN for si, kip for us).
profile[].pileSettlement / .soilSettlementnumberPile settlement and imposed free-field soil settlement at the node, downward + (m for si, ft for us).

Code examples

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

POST /v1/downdrag
curl https://api.pilecalc.com/v1/downdrag \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "unitSystem": "si",
  "method": "fhwa-gec12-neutral-plane",
  "pile": {
    "kind": "uniform",
    "length": 20,
    "diameter": 0.5,
    "elasticModulus": 30000000,
    "unitWeight": 24,
    "displacement": true
  },
  "soil": {
    "layers": [
      {
        "type": "cohesive",
        "top": 0,
        "bottom": 10,
        "gamma": 17,
        "cohesion": 30,
        "ka": 0.9
      },
      {
        "type": "cohesionless",
        "top": 10,
        "bottom": 22,
        "gamma": 19.5,
        "phi": 36
      }
    ],
    "waterTableDepth": 2,
    "waterUnitWeight": 9.81
  },
  "loads": {
    "servicePermanent": 400,
    "strengthFactors": {
      "permanentHead": 1.25,
      "negativeSkinFriction": 1.5,
      "pileSelfWeight": 1.25
    }
  },
  "settlement": {
    "kind": "prescribed-linear",
    "surface": 0.05,
    "zeroDepth": 10
  },
  "transferModel": "reese-oneill-layer-specific-t-z-q-z",
  "numerics": {
    "segments": 240,
    "maxIterations": 1500,
    "convergenceTolerance": 0.04
  }
}'

The GET variant returns neutralPlaneDepth,dragload,maxAxialForce 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

  • maxAxialForce includes permanent head load, negative skin friction, and effective pile self-weight above neutralPlaneDepth. Use the explicit service or strength combination for the corresponding structural check.
  • Do not add transient live load to the dragload — live load momentarily reverses the relative movement at the neutral plane.
  • headSettlement is the serviceability answer; profile[] lets you plot the force and the pile-vs-soil settlement curves (they cross at the neutral plane).
  • The endpoint fails closed unless both fine and coarse meshes converge within the requested tolerance; inspect convergence for the actual drift and equilibrium residual.

The water-unit-weight trap

With a water table, effective stresses depend on soil.waterUnitWeight — pass 9.81 when working in kN/m³ (see Units & conventions).