# Kite Flying API
> Kite-flying maths as an API, computed locally and deterministically — the line-pull, altitude and minimum-wind numbers a kite flyer, festival organiser or kite app works a flight out with. The line-pull endpoint gives the tension a kite puts on the line ≈ ½ × air density × wind speed² × sail area × a force coefficient (~0.8 for a typical flat or delta kite): because it rises with the square of the wind, doubling the wind quadruples the pull — a 1.5 m² kite holds about 47 N (nearly 5 kgf) at 8 m/s but four times that in a strong blow, so the line and your grip must be sized to the gusts, not the average. The altitude endpoint gives the flying height = the line let out × the sine of the line angle above the horizontal, with the downwind distance from the cosine: 100 m of line at a 45° angle reaches about 71 m up and 71 m downwind, while a heavy or under-flown kite sags to a low angle and never climbs. The min-wind endpoint gives the lightest wind that lifts off, where the aerodynamic lift just equals the weight: min wind = √(2 × mass × g ÷ (air density × area × lift coefficient)), so a 200 g, 1.5 m² kite needs only about 1.6 m/s (6 km/h) — lighter sails and bigger area drop the threshold. Everything is computed locally and deterministically, so it is instant and private. Ideal for kite-flying and festival apps, hobby and STEM-education tools, and outdoor calculators. Pure local computation — no key, no third-party service, instant. Flat-kite estimates — combine with real wind readings. 3 compute endpoints. For drag and terminal velocity use a drag API; for structural wind load a wind-load 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/kite-api/..."
```

## Pricing
- **Free** (Free) — 5,900 calls/Mo, 2 req/s
- **Starter** ($6/Mo) — 53,000 calls/Mo, 6 req/s
- **Pro** ($22/Mo) — 237,000 calls/Mo, 15 req/s
- **Mega** ($71/Mo) — 1,075,000 calls/Mo, 40 req/s

## Endpoints

### Kite

#### `GET /v1/altitude` — Flying height from line and angle

**Parameters:**
- `line_length_m` (query, required, string) — Line let out (m) Example: `100`
- `line_angle_deg` (query, required, string) — Line angle above horizontal (degrees) Example: `45`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/kite-api/v1/altitude?line_length_m=100&line_angle_deg=45"
```

**Response:**
```json
{
    "data": {
        "note": "Flying height = the line let out × the sine of the line angle above the horizontal: 100 m of line at a 45° angle reaches about 71 m up and 71 m downwind. A light, well-trimmed kite flies at a steep 60–75° and gains height fast; a heavy or under-flown one sags to a low angle and never climbs, no matter how much line you pay out. Line sag in light wind makes the real height a little less than this straight-line figure.",
        "inputs": {
            "line_length_m": 100,
            "line_angle_deg": 45
        },
        "altitude_m": 70.711,
        "horizontal_distance_m": 70.711
    },
    "meta": {
        "timestamp": "2026-06-07T08:17:48.972Z",
        "request_id": "d0f818a0-2cbf-42c0-902d-ba26fa33626e"
    },
    "status": "ok",
    "message": "Altitude",
    "success": true
}
```

#### `GET /v1/line-pull` — Line tension in a wind

**Parameters:**
- `wind_speed_ms` (query, required, string) — Wind speed (m/s) Example: `8`
- `kite_area_m2` (query, required, string) — Sail area (m²) Example: `1.5`
- `pull_coefficient` (query, optional, string) — Force coefficient (default 0.8) Example: `0.8`
- `air_density` (query, optional, string) — Air density (kg/m³, default 1.225) Example: `1.225`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/kite-api/v1/line-pull?wind_speed_ms=8&kite_area_m2=1.5&pull_coefficient=0.8&air_density=1.225"
```

**Response:**
```json
{
    "data": {
        "note": "The pull a kite puts on the line ≈ ½ × air density × wind speed² × sail area × a force coefficient (~0.8 for a typical flat/delta kite). It rises with the square of the wind, so doubling the wind quadruples the pull — a 1.5 m² kite holds about 47 N (nearly 5 kgf) at 8 m/s but four times that in a 16 m/s blow. Size the line and your grip to the gusts, not the average.",
        "inputs": {
            "air_density": 1.225,
            "kite_area_m2": 1.5,
            "wind_speed_ms": 8,
            "pull_coefficient": 0.8
        },
        "line_pull_n": 47.04,
        "line_pull_kgf": 4.797
    },
    "meta": {
        "timestamp": "2026-06-07T08:17:49.071Z",
        "request_id": "10855908-2268-4b8f-addb-24b2a6c51351"
    },
    "status": "ok",
    "message": "Line pull",
    "success": true
}
```

#### `GET /v1/min-wind` — Minimum wind to lift off

**Parameters:**
- `kite_weight_g` (query, required, string) — Kite weight (g) Example: `200`
- `kite_area_m2` (query, required, string) — Sail area (m²) Example: `1.5`
- `lift_coefficient` (query, optional, string) — Lift coefficient (default 0.8) Example: `0.8`
- `air_density` (query, optional, string) — Air density (kg/m³, default 1.225) Example: `1.225`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/kite-api/v1/min-wind?kite_weight_g=200&kite_area_m2=1.5&lift_coefficient=0.8&air_density=1.225"
```

**Response:**
```json
{
    "data": {
        "note": "The lightest wind that lifts a kite is where the aerodynamic lift just equals its weight: min wind = √(2 × mass × g ÷ (air density × area × lift coefficient)). A 200 g, 1.5 m² kite needs only about 1.6 m/s (6 km/h) — a gentle breeze. Lighter sails and bigger area drop the threshold, which is why featherweight kites fly when the flags are barely stirring and heavy ones sit on the ground.",
        "inputs": {
            "air_density": 1.225,
            "kite_area_m2": 1.5,
            "kite_weight_g": 200,
            "lift_coefficient": 0.8
        },
        "min_wind_ms": 1.634,
        "min_wind_kmh": 5.88
    },
    "meta": {
        "timestamp": "2026-06-07T08:17:49.163Z",
        "request_id": "bf9d2293-5c16-4060-80a3-73fc2d1ed4b1"
    },
    "status": "ok",
    "message": "Minimum wind",
    "success": true
}
```

### Meta

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

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

**Response:**
```json
{
    "data": {
        "notes": "SI. pull = ½·ρ·v²·A·C; altitude = line·sin(angle); min wind = √(2·m·g/(ρ·A·CL)). Flat-kite estimates. For drag/terminal velocity use a drag API; for structural wind load a wind-load API.",
        "service": "kite-api",
        "endpoints": {
            "GET /v1/meta": "This document.",
            "GET /v1/altitude": "Flying height and downwind distance from line length and angle.",
            "GET /v1/min-wind": "Minimum wind speed to lift a kite of a given weight and area.",
            "GET /v1/line-pull": "Line tension from wind speed, sail area and coefficient."
        },
        "description": "Kite-flying maths: line pull in a wind, flying altitude from line length and angle, and minimum wind to lift off."
    },
    "meta": {
        "timestamp": "2026-06-07T08:17:49.236Z",
        "request_id": "9b8efafc-4467-4473-84b0-ed9e32ceb528"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}
```


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