# Knife Sharpening API
> Knife-sharpening maths as an API, computed locally and deterministically — the bevel and angle numbers a sharpener, cook or knifemaker sets a stone to. It uses the symmetric V-edge model: the bevel endpoint takes the blade thickness and a per-side (or inclusive) angle and returns the bevel face width = (thickness ÷ 2) ÷ sin(per-side angle), with the inclusive angle as twice the per-side — so a 2 mm blade ground at 15° per side has a 3.86 mm bevel and a 30° edge, and at a 40° inclusive (20° per side) a 2.92 mm bevel. The angle endpoint runs it in reverse for the marker (Sharpie) method: colour the edge, take one stroke, measure the shiny bevel, and per-side angle = asin((thickness ÷ 2) ÷ bevel width) tells you the angle you are actually holding. The recommend endpoint gives sensible inclusive-angle ranges by use — about 12–17° for razors, 20–30° for Japanese kitchen knives, 30–40° for Western chef’s and EDC, 40–50° for outdoor and hard use, 45–65° for axes — and converts any chosen inclusive angle to per-side and back. Everything is computed locally and deterministically, so it is instant and private. Ideal for knife, kitchen, EDC, bushcraft, woodworking and sharpening app developers, sharpening-jig and edge-geometry tools, and maker software. Pure local computation — no key, no third-party service, instant. Symmetric V-edge model, mm and degrees. Live, nothing stored. 3 compute endpoints.

## 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/knifesharp-api/..."
```

## Pricing
- **Free** (Free) — 6,850 calls/Mo, 2 req/s
- **Starter** ($4/Mo) — 55,200 calls/Mo, 6 req/s
- **Pro** ($12/Mo) — 227,000 calls/Mo, 15 req/s
- **Mega** ($37/Mo) — 1,328,000 calls/Mo, 40 req/s

## Endpoints

### Sharpening

#### `GET /v1/angle` — Angle from a measured bevel

**Parameters:**
- `thickness_mm` (query, required, string) — Blade thickness (mm) Example: `2`
- `bevel_width_mm` (query, required, string) — Measured bevel face width (mm) Example: `3.864`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/knifesharp-api/v1/angle?thickness_mm=2&bevel_width_mm=3.864"
```

**Response:**
```json
{
    "data": {
        "note": "Inverse of the bevel geometry: per-side angle = asin((thickness ÷ 2) ÷ bevel width). Measure the shiny bevel with the marker (Sharpie) method — colour the edge, take a stroke, see where it removed ink — then read your real angle here.",
        "inputs": {
            "thickness_mm": 2,
            "bevel_width_mm": 3.864
        },
        "per_side_deg": 15,
        "inclusive_deg": 30
    },
    "meta": {
        "timestamp": "2026-06-06T07:14:00.429Z",
        "request_id": "2e88a53e-3626-4685-a7f1-d754d28cfbf9"
    },
    "status": "ok",
    "message": "Angle from bevel",
    "success": true
}
```

#### `GET /v1/bevel` — Bevel geometry

**Parameters:**
- `thickness_mm` (query, required, string) — Blade thickness at the shoulder (mm) Example: `2`
- `per_side_deg` (query, optional, string) — Per-side angle (deg) Example: `15`
- `inclusive_deg` (query, optional, string) — Inclusive angle (deg) — alternative

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/knifesharp-api/v1/bevel?thickness_mm=2&per_side_deg=15"
```

**Response:**
```json
{
    "data": {
        "note": "Symmetric V-edge: each bevel face width = (thickness ÷ 2) ÷ sin(per-side angle); the inclusive angle is twice the per-side. A lower angle is sharper but weaker. Add a tiny micro-bevel a few degrees higher for durability.",
        "inputs": {
            "per_side_deg": 15,
            "thickness_mm": 2
        },
        "per_side_deg": 15,
        "inclusive_deg": 30,
        "bevel_width_mm": 3.864
    },
    "meta": {
        "timestamp": "2026-06-06T07:14:00.516Z",
        "request_id": "8935ce4b-3415-4f46-b34c-f78c33cf5b18"
    },
    "status": "ok",
    "message": "Bevel geometry",
    "success": true
}
```

#### `GET /v1/recommend` — Recommended angle by use

**Parameters:**
- `use` (query, optional, string) — razor, kitchen_japanese, kitchen_western, edc, outdoor, cleaver, axe, chisel Example: `kitchen_western`
- `inclusive_deg` (query, optional, string) — Convert this inclusive angle
- `per_side_deg` (query, optional, string) — Convert this per-side angle

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/knifesharp-api/v1/recommend?use=kitchen_western"
```

**Response:**
```json
{
    "data": {
        "note": "Inclusive edge angles by use. Lower = keener but chips/rolls sooner; higher = tougher but less keen. Pass inclusive_deg or per_side_deg to also convert a specific angle.",
        "inputs": {
            "use": "kitchen_western"
        },
        "typical_for": "Western chef's knives, general kitchen",
        "per_side_deg_range": "15-20°",
        "inclusive_deg_range": "30-40°"
    },
    "meta": {
        "timestamp": "2026-06-06T07:14:00.582Z",
        "request_id": "556a0336-feb6-4e0b-8c11-580c0b2a2261"
    },
    "status": "ok",
    "message": "Recommended angle",
    "success": true
}
```

### Meta

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

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

**Response:**
```json
{
    "data": {
        "notes": "Symmetric V-edge model; thickness in mm, angles in degrees. Bevel width = (thickness/2)/sin(per-side); per-side = asin((thickness/2)/width). Inclusive = 2 × per-side. Use the marker method to measure your real angle.",
        "service": "knifesharp-api",
        "endpoints": {
            "GET /v1/meta": "This document.",
            "GET /v1/angle": "Per-side and inclusive angle from a measured bevel width and thickness.",
            "GET /v1/bevel": "Bevel face width from blade thickness and per-side (or inclusive) angle.",
            "GET /v1/recommend": "Recommended inclusive angle range by use, with inclusive ↔ per-side conversion."
        },
        "description": "Knife-sharpening maths: bevel geometry from thickness and angle, the inverse angle from a measured bevel, and recommended angles by use."
    },
    "meta": {
        "timestamp": "2026-06-06T07:14:00.630Z",
        "request_id": "0d22235a-9eb4-4d0f-8ae7-1d63e8074fee"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}
```


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