Pad-scale API

pad-scale-api/1.0.0 — run a whole-pad fracture simulation from your own spreadsheet and compare it against the app's reference audit. Pure compute: nothing you send is stored, and no sign-in is needed.

1. Solve one well

POST https://wellboregenius.com/api/public/pad-scale/solve with a JSON body, or GET the same URL with query parameters when your tool can only fetch a URL.

curl -X POST https://wellboregenius.com/api/public/pad-scale/solve \
  -H 'content-type: application/json' \
  -d '{"name":"Wolfcamp A 12H","stageCount":10,"stageSpacingFt":225,
       "clusterCount":6,"payHeightFt":160,"tvdFt":9200,"closureStressPsi":7600,
       "youngsModulusMpsi":4.6,"slurryVolumeBblPerStage":9500,"rateBpm":85,
       "viscosityCp":3,"proppantLbPerStage":480000,
       "measuredHalfLengthFt":950,"measuredHalfLengthKind":"hydraulic",
       "measuredHeightFt":210,"measuredNetPressurePsi":720}'

Add ?format=flat for one flat row of named numbers (easiest to land in cells), or ?format=csv for the same long-format CSV the app exports.

# Google Sheets, one cell:
=IMPORTDATA("https://wellboregenius.com/api/public/pad-scale/solve?format=csv&name=Test&stageCount=10&payHeightFt=160&tvdFt=9200&closureStressPsi=7600&measuredHalfLengthFt=950")

2. Compare against the reference audit

GET https://wellboregenius.com/api/public/pad-scale/references returns every published field case (HFTS-1 Wolfcamp cores, MSEEL MIP-3H DAS) solved through the same kernel — identical numbers to the in-app reference audit panel. ?format=csv and ?physics=legacy are supported.

Well inputs

Anything you omit uses the default. Values are validated, not silently clamped: an out-of-range value returns HTTP 422 with a plain-language message per field.

FieldMeaningUnitRangeDefault
stageCountStages1 – 608
stageSpacingFtStage spacingft20 – 2000250
clusterCountClusters per stage1 – 246
payHeightFtPay thicknessft5 – 2000180
tvdFtTVDft500 – 250009000
youngsModulusMpsiYoung's modulusMpsi0.2 – 154.5
poissonRatioPoisson ratio0.05 – 0.450.22
toughnessPsiSqrtInToughnesspsi·√in100 – 50001000
closureStressPsiClosure stresspsi500 – 200007500
slurryVolumeBblPerStageSlurry per stagebbl50 – 1000009000
rateBpmStage ratebpm1 – 20080
viscosityCpSlurry viscositycP0.3 – 10003
proppantLbPerStageProppant per stagelb0 – 5000000450000

Measurements (all optional)

FieldMeaning
measuredHalfLengthFtYour measured half-length, ft.
measuredHalfLengthKindhydraulic (fibre/microseismic/pressure — graded like-for-like) or propped (core/tracer — reported as a ratio, never as an error).
measuredHeightFtMeasured fracture height, ft.
measuredNetPressurePsiMeasured net pressure, psi.
measuredFluidEfficiencyFraction between 0 and 1.
measuredSourceFree text stamped into the provenance trailer.

Blank measurements are simply not graded.

Physics

"physics" is "calibrated" (default) or "legacy" for the zero-leak-off closed form. Override individual calibrated constants with a "constants" object; each is clamped to its safe range, so results stay comparable to the app.

ConstantMeaningUnitFitted default
leakoffCoefficientFtPerSqrtMinCarter leak-off coefficientft/√min0.00032
spurtLossFtSpurt lossft0.00002
nolteG0Nolte g₀-1.47
barrierStressContrastPsiBarrier stress contrastpsi150
barrierStressGradientPsiPerFtBarrier stress gradientpsi/ft1
maxHeightFtHeight capft400
inZoneStressGradientPsiPerFtIn-zone stress gradientpsi/ft0.6
proppantBankEfficiencyProppant bank efficiency0.29
proppantPackPorosityProppant pack porosity0.35
proppantDiameterInProppant grain diameterin0.0118
bridgeWidthMultipleBridging width multiple3
packProfileExponentPack bank profile exponent0.8
bankHeightFtSettled bank heightft95
minPayCoverageFractionMinimum pay coverage0.2
barrierSofteningPsiBarrier threshold softeningpsi40
barrierEncroachmentFractionBarrier encroachment0.4