API: global slope stability
POST/GET /v1/global-slope — terrain, water, circular search and complete numerical diagnostics.
Compute global, unreinforced slope factor of safety with the Bishop simplified method for static, two-dimensional circular surfaces. Terrain must descend left to right; strata are horizontal and contiguous. Total soil unit weights, base strength parameters, a prescribed piezometric line and vertical strip surcharges define the slice forces.
Endpoint
https://api.pilecalc.com/v1/global-slope/v1/global-slope?key=…&req=…&fields=…(for header-less callers)Use explicit candidate circles or a bounded center/radius grid of at most 1,000 circles. Refine and widen the search and compare slice meshes. Piezometric pressure is water unit weight times head above the slice base; suction is not credited. Ponded surface water and water-filled cracks are rejected. An optional dryCrackDepth introduces an empty vertical entry crack; vary its depth independently.
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.
| Field | Type | Required | Constraints |
|---|---|---|---|
method | "bishop-simplified-circular" | yes | |
unitSystem | "si" | "us" | yes | |
terrain[] | object[] | yes | min 2 items, max 100 items |
terrain[].x | number | yes | |
terrain[].elevation | number | yes | |
layers[] | object[] | yes | min 1 item, max 50 items |
layers[].topElevation | number | yes | |
layers[].bottomElevation | number | yes | |
layers[].unitWeight | number | yes | > 0 |
layers[].cohesion | number | yes | ≥ 0 |
layers[].frictionAngleDeg | number | yes | 0 – 60 |
water | object | yes | |
water.mode = "dry" | variant | yes | |
water.mode = "piezometric" | variant | yes | |
water.line[] | object[] | yes | min 2 items, max 100 items |
water.line[].x | number | yes | |
water.line[].elevation | number | yes | |
water.unitWeight | number | yes | > 0 |
surcharges[] | object[] | yes | max 50 items |
surcharges[].startX | number | yes | |
surcharges[].endX | number | yes | |
surcharges[].pressure | number | yes | ≥ 0 |
search | object | yes | |
search.mode = "candidates" | variant | yes | |
search.circles[] | object[] | yes | min 1 item, max 1000 items |
search.circles[].id | string | yes | |
search.circles[].centerX | number | yes | |
search.circles[].centerElevation | number | yes | |
search.circles[].radius | number | yes | > 0 |
search.mode = "grid" | variant | yes | |
search.centerX | object | yes | |
search.centerX.min | number | yes | |
search.centerX.max | number | yes | |
search.centerX.count | number | yes | integer, 2 – 20 |
search.centerElevation | object | yes | |
search.centerElevation.min | number | yes | |
search.centerElevation.max | number | yes | |
search.centerElevation.count | number | yes | integer, 2 – 20 |
search.radius | object | yes | |
search.radius.min | number | yes | |
search.radius.max | number | yes | |
search.radius.count | number | yes | integer, 2 – 20 |
slices | number | yes | integer, 20 – 500 |
dryCrackDepth | number | no | ≥ 0 |
Response fields
| Field | Type | Description |
|---|---|---|
critical.factorOfSafety | number | Minimum FS among valid evaluated circles; not a certified global minimum. |
candidates | array | Every evaluated circle, with converged slice data or a rejection reason. |
search.coverageComplete | boolean | False whenever any submitted circle was rejected; the search is then incomplete. |
Code examples
A complete, runnable request. Replace YOUR_API_KEY (or set PILECALC_API_KEY in your environment).
curl https://api.pilecalc.com/v1/global-slope \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"method": "bishop-simplified-circular",
"unitSystem": "si",
"terrain": [
{
"x": -20,
"elevation": 10
},
{
"x": 0,
"elevation": 10
},
{
"x": 20,
"elevation": 0
},
{
"x": 40,
"elevation": 0
}
],
"layers": [
{
"topElevation": 10,
"bottomElevation": -30,
"unitWeight": 20,
"cohesion": 0,
"frictionAngleDeg": 25
}
],
"water": {
"mode": "dry"
},
"surcharges": [],
"search": {
"mode": "candidates",
"circles": [
{
"id": "trial-1",
"centerX": 8,
"centerElevation": 18,
"radius": 22
}
]
},
"slices": 100
}'The GET variant returns critical.factorOfSafety,search.coverageComplete 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.
The method satisfies vertical force and overall moment equilibrium, not horizontal force equilibrium. Negative effective base normal forces are rejected. Interslice tension and crack-depth optimality require independent review. No pile contribution, seismic force, noncircular slip or Spencer verification is included. No design acceptance is reported.
Source: USACE EM 1110-2-1902 (2003), Appendix F Eqs F-4/F-5, Appendix C-3 and Section 2-7. The implemented pore-pressure projection follows F-4 (u times horizontal width), independently checked by vertical and tangential equilibrium.