SkyCiv’s v3 API
The SkyCiv Structural Analysis and Design API allows engineers to access all the features and functionality of SkyCiv software for their own solutions.
Let us jump right into it. We will go from model → live 3D → analysis results in one smooth loop. That makes it ideal for design calculators, configurators, and feasibility checks embedded in your app.
What you’ll see below?
- A minimal
s3d_modelJSON (nodes, members, sections, loads) - One API request that starts a session, sets the model, and solves
- A browser renderer snippet for immediate feedback
- A lightweight pass/fail validation pattern for inputs
1) Define the model (s3d_model) – From JSON to Model
{
"settings": {
"units": { "length": "m", "force": "kn", "moment": "kn-m" },
"vertical_axis": "Z"
},
"nodes": {
"1": { "x": 0, "y": 0, "z": 0 },
"2": { "x": 5, "y": 0, "z": 0 }
},
"materials": {
"1": { "name": "Steel", "elasticity_modulus": 200000, "yield_strength": 350, "class": "steel", "density": 7850 }
},
"sections": {
"1": { "name": "RHS 100x50x5", "material_id": 1 }
},
"members": {
"1": { "node_A": 1, "node_B": 2, "section_id": 1, "type": "normal" }
},
"supports": {
"A": { "node": 1, "restraint_code": "FFFFFF" },
"B": { "node": 2, "restraint_code": "FFFFRF" }
},
"point_loads": { "P1": { "member": 1, "position": 50, "z_mag": -10 } },
"load_combinations": { "1": { "name": "LC1", "Live": 1 } }
}
You can find more on this at SkyCiv API Solver | SkyCiv Platform
2) Start session → set model → solve
The request has auth, optional options, and a functions array executed in order.
We start a session (faster follow-ups), set the model, then solve. S3D.model.solve carries out the analysis according to the options given. For entire list of options, please go through the link above.
// POST to SkyCiv's API
//
Keep credentials server-side (never expose API keys in the browser).
const payload = {
auth: { username: "YOUR_USER", key: "YOUR_API_KEY" }, // You can get your API Key from SkyCiv once you register
options: { validate_input: true }, // guardrails while iterating
functions: [
{ function: "S3D.session.start", arguments: { keep_open: true } },
{ function: "S3D.model.set", arguments: { s3d_model } },
{ function: "S3D.model.solve", arguments: { analysis_type: "linear" } }
]
};
const res = await fetch("https://api.skyciv.com:8085/v3", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload)
}).then(r => r.json());
const analysis_results = res?.response?.data; // feed to renderer 3) Render instantly in the browser
Drop in the SkyCiv renderer, show the model, and later toggle to results with the same canvas. The instant feedback is very handy for the user to cross -check the model as well.
<!-- Include the SkyCiv renderer bundle per docs -->
<script src="/path/to/skyciv-renderer-dist.js"></script><div id=”renderer” style=”width:100%;height:420px;position:relative;”></div><script>
const viewer = new SKYCIV.renderer({ container_selector: ‘#renderer’ });
// Show model
viewer.model.set(window.s3d_model);
viewer.model.buildStructure();
viewer.render();
Practical tips we use in production
- Start small, then enrich: nodes & members first; add plates/meshes and advanced analysis once your model is stable.
- Reuse sessions: pass the
session_idfor quicker follow-ups (typically valid ~30 minutes). - Right-size results: if you only need envelopes/peaks, filter results to keep payloads snappy.
- Repair early (optional):
S3D.model.repaircan auto-fix common modelling gotchas. - Keep keys safe: proxy your API calls through your server—never ship keys in client code.

