# Import format: open a design from a link

> Open a suspension design in opensus from a URL. The ?example= and ?design= parameters, the JSON schema for hardpoints, camber and toe, every point name for each suspension type, and project files.

Any suspension design can be opened in opensus from a link. `https://opensus.app/app/?example=fsae` opens a built-in example; `https://opensus.app/app/?design=` followed by URL-encoded JSON opens your own hardpoints. This lets a forum post, a spreadsheet or an AI assistant hand someone a working geometry.

Opening a link never loses work: whatever design was already open is kept under **Project → Saved** first.

## Examples

| Link | Opens |
|---|---|
| `/app/?example=fsae` | [Formula SAE car](/docs/examples/fsae/): pushrod double wishbones front and rear |
| `/app/?example=sedan` | [E30-style sedan](/docs/examples/e30/): MacPherson front, semi-trailing arm rear |

## Design JSON

```json
{
  "name": "My car",
  "example": "fsae",
  "front": {
    "type": "doubleWishbone",
    "camber": -1.5,
    "toe": 0.1,
    "points": {
      "ucaOuter": [-8, 550, 330],
      "lcaOuter": [3, 570, 125]
    }
  },
  "rear": {
    "type": "fiveLink",
    "points": { "tieInner": [-130, 215, 185] }
  }
}
```

Every field is optional:

| Field | Meaning |
|---|---|
| `name` | Name shown in the header |
| `example` | Start from an example (`fsae` or `sedan`) instead of the default car |
| `front`, `rear` | One axle, given as its left corner and mirrored to the right |
| `type` | `doubleWishbone`, `macpherson`, `fiveLink` or `semiTrailing`. Points not listed keep that type's defaults |
| `camber`, `toe` | Static camber and toe-in in degrees at the loaded position |
| `points` | Point name → `[X, Y, Z]` in mm, in [opensus coordinates](/docs/coordinates/): ISO 8855, measured from the axle line, centreline and ground |

Put the JSON in the `design` parameter, URL-encoded. In JavaScript: `"https://opensus.app/app/?design=" + encodeURIComponent(JSON.stringify(design))`. In Python: `"https://opensus.app/app/?design=" + urllib.parse.quote(json.dumps(design))`.

If part of a link can't be used, such as an unknown point name or a coordinate that isn't a number, opensus opens the rest and lists what it skipped.

## Point names

These are the names to use in `points`, with each type's default front-corner position.

### Double A-arm (`doubleWishbone`)

| Name | Point | Default front position, mm |
|---|---|---|
| `ucaFront` | Upper arm, front inner | 110, 280, 292 |
| `ucaRear` | Upper arm, rear inner | -110, 280, 288 |
| `ucaOuter` | Upper ball joint | -8, 550, 330 |
| `lcaFront` | Lower arm, front inner | 120, 200, 113 |
| `lcaRear` | Lower arm, rear inner | -120, 200, 117 |
| `lcaOuter` | Lower ball joint | 3, 570, 125 |
| `tieInner` | Tie rod inner | -68, 215, 148 |
| `tieOuter` | Tie rod outer | -70, 565, 165 |
| `wheelCentre` | Wheel centre | 0, 604, 222 |
| `rodOuter` | Pushrod at lower arm | 0, 530, 135 |
| `rodInner` | Pushrod at rocker | 0, 260, 420 |
| `rockerPivot` | Rocker pivot | 0, 220, 370 |
| `rockerAxis` | Rocker axis | 40, 220, 370 |
| `springRocker` | Coilover at rocker | 0, 170, 410 |
| `springChassis` | Coilover at chassis | 0, 60, 300 |
| `arbPivot` | Sway bar pivot | 70, 175, 300 |
| `arbAxis` | Sway bar axis | 70, 115, 300 |
| `arbTip` | Sway bar arm tip | -30, 175, 300 |
| `arbDrop` | Drop link at rocker | -30, 175, 395 |

### MacPherson strut (`macpherson`)

| Name | Point | Default front position, mm |
|---|---|---|
| `lcaFront` | Lower arm, front inner | 130, 210, 118 |
| `lcaRear` | Lower arm, rear inner | -130, 210, 122 |
| `lcaOuter` | Lower ball joint | 5, 575, 120 |
| `strutTop` | Strut top mount | -25, 500, 620 |
| `strutBase` | Strut base on upright | -5, 545, 300 |
| `strutGuide` | Strut axis guide | -10, 534, 380 |
| `tieInner` | Tie rod inner | -110, 220, 190 |
| `tieOuter` | Tie rod outer | -110, 560, 195 |
| `wheelCentre` | Wheel centre | 0, 604, 222 |

### 5-link (`fiveLink`)

| Name | Point | Default front position, mm |
|---|---|---|
| `upperFrontIn` | Upper front link inner | 160, 260, 320 |
| `upperFrontOut` | Upper front link outer | 30, 540, 335 |
| `upperRearIn` | Upper rear link inner | -150, 270, 325 |
| `upperRearOut` | Upper rear link outer | -35, 540, 335 |
| `lowerFrontIn` | Lower front link inner | 170, 210, 125 |
| `lowerFrontOut` | Lower front link outer | 40, 565, 118 |
| `lowerRearIn` | Lower rear link inner | -170, 210, 125 |
| `lowerRearOut` | Lower rear link outer | -40, 565, 118 |
| `tieInner` | Tie rod inner | -130, 215, 180 |
| `tieOuter` | Tie rod outer | -130, 560, 190 |
| `wheelCentre` | Wheel centre | 0, 604, 222 |
| `springUpright` | Coilover at upright | 0, 500, 175 |
| `springChassis` | Coilover at chassis | 0, 400, 470 |

### Semi-trailing arm (`semiTrailing`)

| Name | Point | Default front position, mm |
|---|---|---|
| `armInner` | Arm pivot, inboard | 200, 170, 250 |
| `armOuter` | Arm pivot, outboard | 295, 500, 250 |
| `wheelCentre` | Wheel centre | 0, 604, 222 |
| `springArm` | Spring at arm | 50, 400, 160 |
| `springChassis` | Spring at chassis | 50, 400, 330 |
| `damperArm` | Damper at arm | -50, 500, 190 |
| `damperChassis` | Damper at chassis | -20, 470, 480 |

## Project files

For a complete design (every point, link, spring, damper, tire and setting), use a project file instead: **Download → opensus project** saves a `.opensus.json` file, and **Project → Upload project** opens one. Project files use the same ISO 8855 millimetre coordinates.

Source: https://opensus.app/docs/import-format/ (last updated 2026-11-07)
