# Riveted Joint API
> Riveted-joint strength maths as an API, computed locally and deterministically — the shear, bearing and rivet-count numbers a structural, sheet-metal or aircraft fitter checks a riveted connection by. The shear-capacity endpoint gives the load a rivet group carries across its shanks = the rivet area (π/4·d²) × the shear strength × the number of rivets × the shear planes — a rivet in single shear is cut on one plane, in double shear (the centre plate of a butt joint with cover plates) on two, so it carries twice. The bearing-capacity endpoint gives the load the rivets can press against the sides of their holes before the plate crushes = the projected contact area (diameter × plate thickness) × the bearing strength × the number of rivets; thin plates fail in bearing long before the rivet shears, which is exactly why both must be checked — the joint strength is the lesser of the two. The rivets-required endpoint inverts it: the rivets a design load needs = the load ÷ the allowable load per rivet (area × allowable shear × planes), rounded up to a whole rivet, using the working shear (strength ÷ safety factor) not the raw value. Everything is computed locally and deterministically, so it is instant and private. Ideal for structural and sheet-metal estimating, mechanical-design and fastener tools, and engineering calculators. Pure local computation — no key, no third-party service, instant. Shank-shear and bearing only — also confirm edge tear-out and minimum pitch. 3 compute endpoints. For bolt preload and torque use a bolt-torque API; for thread geometry a thread API; for welded joints a welding 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/rivet-api/..."
```

## Pricing
- **Free** (Free) — 6,400 calls/Mo, 2 req/s
- **Starter** ($9/Mo) — 61,000 calls/Mo, 6 req/s
- **Pro** ($29/Mo) — 255,000 calls/Mo, 15 req/s
- **Mega** ($88/Mo) — 1,180,000 calls/Mo, 40 req/s

## Endpoints

### Rivets

#### `GET /v1/bearing-capacity` — Bearing capacity at the plate

**Parameters:**
- `rivet_diameter_mm` (query, required, string) — Rivet diameter (mm) Example: `6`
- `plate_thickness_mm` (query, required, string) — Plate thickness (mm) Example: `3`
- `bearing_strength_mpa` (query, required, string) — Bearing strength (MPa) Example: `440`
- `rivet_count` (query, optional, string) — Number of rivets (default 1) Example: `4`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/rivet-api/v1/bearing-capacity?rivet_diameter_mm=6&plate_thickness_mm=3&bearing_strength_mpa=440&rivet_count=4"
```

**Response:**
```json
{
    "data": {
        "note": "Bearing (or crushing) capacity is the load the rivet can press against the side of its hole before the plate or rivet crushes: capacity = the projected contact area (diameter × plate thickness) × the bearing strength × the number of rivets. Thin plates fail in bearing long before the rivet shears, which is why bearing must be checked alongside shear; the joint's real strength is the lesser of the two, and edge tear-out is a third check beyond this.",
        "inputs": {
            "rivet_count": 4,
            "rivet_diameter_mm": 6,
            "plate_thickness_mm": 3,
            "bearing_strength_mpa": 440
        },
        "per_rivet_bearing_n": 7920,
        "total_bearing_capacity_n": 31680,
        "total_bearing_capacity_kn": 31.68
    },
    "meta": {
        "timestamp": "2026-06-07T08:17:55.320Z",
        "request_id": "ca4c69c7-6983-4b22-bee5-c3d755fd9822"
    },
    "status": "ok",
    "message": "Bearing capacity",
    "success": true
}
```

#### `GET /v1/rivets-required` — Rivets needed for a load

**Parameters:**
- `load_n` (query, required, string) — Design load (N) Example: `50000`
- `rivet_diameter_mm` (query, required, string) — Rivet diameter (mm) Example: `6`
- `allowable_shear_mpa` (query, required, string) — Allowable shear stress (MPa) Example: `250`
- `shear_planes` (query, optional, string) — Shear planes 1 or 2 (default 1) Example: `1`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/rivet-api/v1/rivets-required?load_n=50000&rivet_diameter_mm=6&allowable_shear_mpa=250&shear_planes=1"
```

**Response:**
```json
{
    "data": {
        "note": "The rivets a joint needs = the design load ÷ the allowable load per rivet (rivet area × allowable shear × shear planes), rounded up to a whole rivet — always use the allowable (working) shear, the strength divided by the safety factor, not the raw strength. Add rivets for an even, symmetric pattern and respect the minimum pitch and edge distances; this count is the shear minimum, so still confirm bearing and tear-out for the plate.",
        "inputs": {
            "load_n": 50000,
            "shear_planes": 1,
            "rivet_diameter_mm": 6,
            "allowable_shear_mpa": 250
        },
        "rivets_exact": 7.074,
        "rivets_required": 8,
        "per_rivet_capacity_n": 7068.6
    },
    "meta": {
        "timestamp": "2026-06-07T08:17:55.422Z",
        "request_id": "0454e897-e324-4373-96ff-4963cca15def"
    },
    "status": "ok",
    "message": "Rivets required",
    "success": true
}
```

#### `GET /v1/shear-capacity` — Shear capacity of a rivet group

**Parameters:**
- `rivet_diameter_mm` (query, required, string) — Rivet diameter (mm) Example: `6`
- `shear_strength_mpa` (query, required, string) — Shear strength (MPa) Example: `250`
- `rivet_count` (query, optional, string) — Number of rivets (default 1) Example: `4`
- `shear_planes` (query, optional, string) — Shear planes 1 or 2 (default 1) Example: `1`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/rivet-api/v1/shear-capacity?rivet_diameter_mm=6&shear_strength_mpa=250&rivet_count=4&shear_planes=1"
```

**Response:**
```json
{
    "data": {
        "note": "A rivet group carries load by shear across its cross-section: capacity = the rivet area (π/4·d²) × the shear strength × the number of rivets × the shear planes. A rivet in single shear is cut on one plane; in double shear (the centre plate of a lap-and-cover joint) it is cut on two, so it carries twice. This is the shank-shear limit only — compare it with the bearing limit (see /v1/bearing-capacity); the joint is governed by whichever is smaller.",
        "inputs": {
            "rivet_count": 4,
            "shear_planes": 1,
            "rivet_diameter_mm": 6,
            "shear_strength_mpa": 250
        },
        "rivet_area_mm2": 28.274,
        "per_rivet_shear_n": 7068.6,
        "total_shear_capacity_n": 28274.3,
        "total_shear_capacity_kn": 28.274
    },
    "meta": {
        "timestamp": "2026-06-07T08:17:55.516Z",
        "request_id": "50ff2770-90af-4aae-a3c3-65e8e6c58f27"
    },
    "status": "ok",
    "message": "Shear capacity",
    "success": true
}
```

### Meta

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

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

**Response:**
```json
{
    "data": {
        "notes": "mm, MPa in; N out. shear = (π/4·d²)·τ·count·planes; bearing = d·t·σ·count; rivets = ceil(load/(area·τ·planes)). Joint strength is the lesser of shear and bearing; check edge tear-out separately. For bolt preload/torque use a bolt-torque API; for thread geometry a thread API.",
        "service": "rivet-api",
        "endpoints": {
            "GET /v1/meta": "This document.",
            "GET /v1/shear-capacity": "Shear capacity from rivet diameter, shear strength, count and planes.",
            "GET /v1/rivets-required": "Rivets needed for a load at an allowable shear stress.",
            "GET /v1/bearing-capacity": "Bearing capacity from diameter, plate thickness and bearing strength."
        },
        "description": "Riveted-joint maths: shear capacity of a rivet group, bearing capacity at the plate, and rivets required for a load."
    },
    "meta": {
        "timestamp": "2026-06-07T08:17:55.616Z",
        "request_id": "a863c775-4574-44c4-b1c1-603ae404c482"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}
```


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