# Weld Strength API
> Weld design maths as an API, computed locally and deterministically. The fillet endpoint sizes an equal-leg fillet weld: from the leg size, the weld length and an allowable shear stress it returns the effective throat (leg ÷ √2), the effective area, the load capacity and the strength per millimetre of weld; give a design force instead of a leg and it returns the required throat and leg size, and if you also pass a provided leg it reports the utilization and whether the weld is adequate. The butt endpoint handles a full-penetration butt (groove) weld, where the effective throat equals the plate thickness, returning the area and capacity. The throat endpoint converts between leg and throat — equal-leg (throat = leg ÷ √2), unequal legs (throat = a·b ÷ √(a²+b²)) and throat back to leg. Lengths are in millimetres, stress in megapascals and force in newtons. Everything is computed locally and deterministically, so it is instant and private. An estimating aid, not a code-stamped design — use the allowable stress and electrode from your governing code (AISC, Eurocode). Ideal for structural and fabrication tools, weld-design and estimating apps, maker and metalwork projects, and engineering calculators. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 endpoints. This is weld strength sizing; for bolt tightening torque use a torque API and for the weight of the steel use a metal-weight API.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/weld-api/..."
```

## Pricing
- **Free** (Free) — 2,000 calls/Mo, 2 req/s
- **Starter** ($9/Mo) — 12,000 calls/Mo, 5 req/s
- **Pro** ($24/Mo) — 60,000 calls/Mo, 15 req/s
- **Mega** ($75/Mo) — 300,000 calls/Mo, 40 req/s

## Endpoints

### Weld

#### `GET /v1/butt` — Butt (groove) weld capacity

**Parameters:**
- `thickness` (query, required, string) — Plate thickness (mm) Example: `10`
- `length` (query, required, string) — Weld length (mm) Example: `100`
- `allowable_stress` (query, optional, string) — Allowable stress (MPa, default 144) Example: `160`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/weld-api/v1/butt?thickness=10&length=100&allowable_stress=160"
```

**Response:**
```json
{
    "data": {
        "note": "Full-penetration butt weld: effective throat = plate thickness. Capacity = thickness × length × allowable stress.",
        "capacity": {
            "N": 160000,
            "kN": 160,
            "kgf": 16315.46
        },
        "thickness_mm": 10,
        "weld_length_mm": 100,
        "effective_area_mm2": 1000,
        "effective_throat_mm": 10,
        "allowable_stress_mpa": 160
    },
    "meta": {
        "timestamp": "2026-06-04T01:59:03.634Z",
        "request_id": "f4d1f43d-fb38-49a0-b8e7-ad2eb032e7d1"
    },
    "status": "ok",
    "message": "Butt (groove) weld capacity",
    "success": true
}
```

#### `GET /v1/fillet` — Fillet weld capacity / size

**Parameters:**
- `length` (query, required, string) — Weld length (mm) Example: `100`
- `leg` (query, optional, string) — Leg size (to get capacity) Example: `6`
- `force` (query, optional, string) — Or design force N (to get required leg)
- `allowable_shear_stress` (query, optional, string) — Allowable shear (MPa, default 144) Example: `144`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/weld-api/v1/fillet?length=100&leg=6&allowable_shear_stress=144"
```

**Response:**
```json
{
    "data": {
        "mode": "capacity",
        "note": "Equal-leg fillet weld. Default allowable shear is indicative — use the value from your governing code (AISC/Eurocode) and electrode.",
        "leg_mm": 6,
        "formula": "throat = leg/√2; area = throat × length; capacity = area × allowable shear.",
        "capacity": {
            "N": 61094.03,
            "kN": 61.094,
            "kgf": 6229.86
        },
        "throat_mm": 4.2426,
        "weld_length_mm": 100,
        "allowable_source": "explicit",
        "effective_area_mm2": 424.264,
        "allowable_shear_stress_mpa": 144,
        "strength_per_length_N_per_mm": 610.9403
    },
    "meta": {
        "timestamp": "2026-06-04T01:59:03.738Z",
        "request_id": "18fcc998-f586-426d-91e0-11e42afaf3c5"
    },
    "status": "ok",
    "message": "Fillet weld capacity / size",
    "success": true
}
```

#### `GET /v1/throat` — Leg ↔ throat conversion

**Parameters:**
- `leg` (query, optional, string) — Leg (equal) or first leg Example: `8`
- `leg_b` (query, optional, string) — Second leg (unequal fillet)
- `throat` (query, optional, string) — Or throat (to get leg)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/weld-api/v1/throat?leg=8"
```

**Response:**
```json
{
    "data": {
        "mode": "equal_leg",
        "note": "Equal-leg fillet throat = leg / √2 = 0.7071 × leg.",
        "leg_mm": 8,
        "throat_mm": 5.6569
    },
    "meta": {
        "timestamp": "2026-06-04T01:59:03.838Z",
        "request_id": "c52be82b-2f6f-487a-b4da-a80d56ede376"
    },
    "status": "ok",
    "message": "Leg <-> throat conversion",
    "success": true
}
```

### Meta

#### `GET /v1/meta` — Spec

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/weld-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "api": "weld",
        "note": "Weld design maths — computed locally and deterministically, no key, no third-party service. An estimating aid, not a code-stamped design.",
        "endpoints": [
            "/v1/fillet",
            "/v1/butt",
            "/v1/throat",
            "/v1/meta"
        ],
        "default_allowable_shear_mpa": 144
    },
    "meta": {
        "timestamp": "2026-06-04T01:59:03.931Z",
        "request_id": "c8311140-83b2-48c3-9f01-ae4da0a0a4bf"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}
```


---
Marketplace page: https://www.oanor.com/api/weld-api
OpenAPI spec: https://www.oanor.com/api/weld-api/openapi.json
