{"openapi":"3.1.0","info":{"title":"Kite Flying API","version":"1.0.0","description":"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.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/kite-api","description":"oanor gateway"}],"tags":[{"name":"Kite"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/altitude":{"get":{"operationId":"get_v1_altitude","tags":["Kite"],"summary":"Flying height from line and angle","description":"","parameters":[{"name":"line_length_m","in":"query","required":true,"description":"Line let out (m)","schema":{"type":"string"},"example":"100"},{"name":"line_angle_deg","in":"query","required":true,"description":"Line angle above horizontal (degrees)","schema":{"type":"string"},"example":"45"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"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}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/line-pull":{"get":{"operationId":"get_v1_line_pull","tags":["Kite"],"summary":"Line tension in a wind","description":"","parameters":[{"name":"wind_speed_ms","in":"query","required":true,"description":"Wind speed (m/s)","schema":{"type":"string"},"example":"8"},{"name":"kite_area_m2","in":"query","required":true,"description":"Sail area (m²)","schema":{"type":"string"},"example":"1.5"},{"name":"pull_coefficient","in":"query","required":false,"description":"Force coefficient (default 0.8)","schema":{"type":"string"},"example":"0.8"},{"name":"air_density","in":"query","required":false,"description":"Air density (kg/m³, default 1.225)","schema":{"type":"string"},"example":"1.225"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"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}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/min-wind":{"get":{"operationId":"get_v1_min_wind","tags":["Kite"],"summary":"Minimum wind to lift off","description":"","parameters":[{"name":"kite_weight_g","in":"query","required":true,"description":"Kite weight (g)","schema":{"type":"string"},"example":"200"},{"name":"kite_area_m2","in":"query","required":true,"description":"Sail area (m²)","schema":{"type":"string"},"example":"1.5"},{"name":"lift_coefficient","in":"query","required":false,"description":"Lift coefficient (default 0.8)","schema":{"type":"string"},"example":"0.8"},{"name":"air_density","in":"query","required":false,"description":"Air density (kg/m³, default 1.225)","schema":{"type":"string"},"example":"1.225"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"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}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Spec","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"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}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":5900,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":640,"monthly_call_quota":53000,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2180,"monthly_call_quota":237000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":7050,"monthly_call_quota":1075000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/kite-api"}