API Reference

CalcSteel provides a REST API for accessing steel profiles, design standards, structural analysis, and project management. The API is available at https://calcsteel.com/api/v1

Authentication

Endpoints marked with "Auth Required" need a Bearer token in the Authorization header. Obtain a token via POST /auth/login or POST /auth/register. Tokens expire after 15 minutes — use POST /auth/refresh to renew.

Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

Rate Limits & Caching

Public endpoints (profiles, standards) are cached for 24 hours. Analysis endpoints have no cache. All endpoints return standard HTTP error codes (400, 401, 403, 404, 422, 500) with a JSON body: { "detail": "error message" }.

Profiles

Browse the complete catalog of 1,140+ steel profiles from AISC, Eurocode, NBR, IS 808, and BS standards. Profiles include full geometric dimensions, weight per meter, and computed section properties.

GET/api/v1/profilesCached 24 hours

List all profiles. Supports filtering by family, standard, and material category.

Request
Query params: ?family=W&standard=AISC&category=hot_rolled
Response
[{
  "id": "AISC_W310X97",
  "name": "W310×97",
  "family": "W",
  "standard": "AISC",
  "category": "hot_rolled",
  "h": 308, "b": 305, "tw": 9.9, "tf": 15.4,
  "weight_per_meter": 97.0,
  "A": 12300, "Ix": 222e6, "Iy": 72.4e6,
  "Sx": 1440e3, "Sy": 475e3,
  "Zx": 1600e3, "Zy": 724e3,
  "rx": 134, "ry": 76.7,
  "J": 1030e3, "Cw": 1540e9
}]
Example
curl https://calcsteel.com/api/v1/profiles?family=W&standard=AISC
GET/api/v1/profiles/{profile_id}Cached 24 hours

Get a single profile by ID with full section properties.

Response
{
  "id": "EC_IPE200",
  "name": "IPE 200",
  "family": "W",
  "standard": "Eurocode",
  "category": "hot_rolled",
  "h": 200, "b": 100, "tw": 5.6, "tf": 8.5,
  "r": 12, "weight_per_meter": 22.4,
  "A": 2850, "Ix": 19.4e6, "Iy": 1.42e6,
  "Sx": 194e3, "Sy": 28.5e3,
  "Zx": 221e3, "Zy": 44.6e3,
  "rx": 82.6, "ry": 22.4,
  "J": 70e3, "Cw": 13e9,
  "hot_rolled": true, "cold_formed": false,
  "stainless": false, "aluminum": false
}
Example
curl https://calcsteel.com/api/v1/profiles/EC_IPE200

Design Standards

Retrieve the list of 41 supported design standards grouped by material category (hot-rolled, cold-formed, stainless steel, aluminum). Returns metadata only (name, country) — internal design parameters and safety coefficients are not exposed.

GET/api/v1/standardsCached 24 hours

Get all available design standards grouped by material category.

Response
{
  "hot_rolled": [
    { "id": "NBR_8800", "label": "NBR 8800:2008", "country": ["BR"], "family": "aisc" },
    { "id": "AISC_360", "label": "AISC 360-16", "country": ["US"], "family": "aisc" },
    { "id": "EN_1993", "label": "EN 1993-1-1:2005", "country": ["EU"], "family": "eurocode" }
    // ... 17 more
  ],
  "cold_formed": [ ... ],
  "stainless": [ ... ],
  "aluminum": [ ... ]
}
Example
curl https://calcsteel.com/api/v1/standards

Structural Analysis

Run structural analysis on a 3D steel frame model. Returns internal force diagrams and design code verification results. Requires authentication and consumes analysis credits per your plan.

POST/api/v1/analysisAuth Required

Run structural analysis and design code verification. Consumes 1 analysis credit. Rate limited per plan.

Request
{
  "project_data": { ... },
  "design_standard": "AISC_360"
}

// project_data is the same JSON structure used by
// the CalcSteel editor. The easiest way to obtain it
// is to build your model in the editor and save it.
Response
{
  "success": true,
  "diagrams": [ ... ],
  "design_checks": [
    {
      "barId": "1",
      "profile": "IPE 200",
      "max_utilization": 0.82,
      "pass": true
    }
  ],
  "remaining_credits": 24
}
Example
curl -X POST https://calcsteel.com/api/v1/analysis \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d @my-project.json

Projects

Create, read, update, and delete structural engineering projects. Each project stores the complete 3D model (nodes, bars, loads, supports), analysis cache, and thumbnail.

GET/api/v1/projectsAuth Required

List all projects for the authenticated user (paginated).

Request
Query params: ?page=1&per_page=20
Response
{
  "data": [
    {
      "slug": "warehouse-12x30",
      "name": "Warehouse 12×30",
      "description": "Industrial warehouse with portal frames",
      "thumbnail": "data:image/webp;base64,...",
      "created_at": "2026-03-10T14:30:00Z",
      "updated_at": "2026-03-15T09:15:00Z"
    }
  ],
  "meta": { "total": 5, "page": 1, "per_page": 20 }
}
POST/api/v1/projectsAuth Required

Create a new project.

Request
{
  "name": "My Portal Frame",
  "description": "2-bay portal frame with roof truss",
  "data": { "nodes": {...}, "bars": {...}, ... },
  "settings": { "gridSize": 1, "snapEnabled": true },
  "thumbnail": "data:image/webp;base64,..."
}
Response
{ "slug": "my-portal-frame", "id": "uuid", ... }
GET/api/v1/projects/{slug}Auth Required

Get a project by slug with full model data and analysis cache.

PUT/api/v1/projects/{slug}Auth Required

Update an existing project (model data, settings, thumbnail).

DELETE/api/v1/projects/{slug}Auth Required

Delete a project permanently.

Export

Export structural models to industry-standard file formats for BIM coordination, CAD detailing, and documentation.

POST/api/v1/ifc/exportAuth Required

Export the 3D model to IFC 2x3 format. Compatible with Autodesk Revit, Tekla Structures, RSTAB, and BricsCAD.

Request
{
  "project_data": { "nodes": {...}, "bars": {...}, "bar_classes": {...} },
  "profile_catalog": [...],
  "project_name": "My Project"
}
Response
Binary IFC file (Content-Type: application/x-step)
POST/api/v1/dxf/exportAuth Required

Export 3D DXF file with ACIS solids. Compatible with AutoCAD, BricsCAD, and DraftSight.

Response
Binary DXF file (Content-Type: application/dxf)
POST/api/v1/dxf/sheet-exportAuth Required

Export 2D engineering drawing sheet to DXF. Includes viewports, dimensions, annotations, and title block.

Response
Binary DXF file (Content-Type: application/dxf)

Authentication

Register and authenticate users. CalcSteel supports email/password registration and Google OAuth 2.0. Access tokens are JWTs with 15-minute expiry; refresh tokens last 30 days.

POST/api/v1/auth/register

Register a new user with email and password.

Request
{ "name": "John", "email": "[email protected]", "password": "..." }
Response
{ "access_token": "eyJ...", "token_type": "bearer" }
POST/api/v1/auth/login

Login with email and password.

Request
{ "email": "[email protected]", "password": "..." }
Response
{ "access_token": "eyJ...", "token_type": "bearer" }
GET/api/v1/auth/google

Get the Google OAuth redirect URL. Redirect the user to this URL to initiate Google sign-in.

Response
{ "url": "https://accounts.google.com/o/oauth2/v2/auth?..." }
POST/api/v1/auth/refresh

Refresh the access token using the HTTP-only refresh cookie.

Response
{ "access_token": "eyJ...", "token_type": "bearer" }
GET/api/v1/auth/meAuth Required

Get the authenticated user profile.

Response
{
  "id": "uuid",
  "name": "John Doe",
  "email": "[email protected]",
  "avatar_url": "https://...",
  "plan": "pro",
  "provider": "google",
  "trial_end": "2026-04-01T00:00:00Z",
  "analysis_credits": 50,
  "email_verified": true
}

Event Tracking

Track semantic events and page views for analytics. Used internally by the CalcSteel frontend.

POST/api/v1/track/event

Track a single semantic event.

Request
{ "event": "analysis_run", "props": { "standard": "AISC_360", "bars": 12 } }
Response
204 No Content
POST/api/v1/track/events

Batch track multiple events in a single request.

Request
{ "events": [{ "event": "profile_view", "props": { "id": "EC_IPE200" } }, ...] }
Response
204 No Content
POST/api/v1/track/pv

Track a page view with optional UTM parameters.

Request
{ "path": "/profiles/EC_IPE200", "referrer": "https://google.com", "utm_source": "google" }
Response
204 No Content

Public Projects

Access publicly shared project data and thumbnails. No authentication required.

GET/api/v1/public/project/{project_id}

Get public project data (model, owner, timestamps).

Response
{
  "name": "Portal Frame 12m",
  "description": "2-bay portal frame with roof truss",
  "data": { "nodes": {...}, "bars": {...} },
  "owner_name": "John",
  "thumbnail": "data:image/webp;base64,...",
  "created_at": "2026-01-10T14:30:00Z",
  "updated_at": "2026-03-12T09:15:00Z"
}
GET/api/v1/public/project/{project_id}/thumbnailCached 1 hour

Download the project thumbnail image.

Response
Binary image (PNG/WebP/SVG)

This API reference covers the public and authenticated endpoints available at calcsteel.com. For questions or API access requests, contact us via the feedback form in the editor.