# Drone Build API
> Multirotor (drone) flight maths as an API, computed locally and deterministically — the thrust, efficiency and hover numbers an FPV builder or UAV designer dials a quadcopter in with. The thrust-weight endpoint gives the thrust-to-weight ratio, total motor thrust ÷ all-up weight: aim for at least 2:1 so the craft has authority to hold position and fight wind, with freestyle wanting 3–5:1 and heavy-lift living near 1.5:1 — four 800-gram motors on a 1,200-gram quad is a punchy 2.67:1. The disk-loading endpoint gives the rotor disk loading, weight ÷ total prop disk area, where lower is more efficient: big slow props move more air for less power, which is why endurance and cinematic rigs run large props at low disk loading. The hover-throttle endpoint gives the hover throttle, all-up weight ÷ total thrust — a good build hovers near 40–50 % leaving headroom for manoeuvres, while hovering above ~60 % means it is overweight, sluggish and runs hot. Everything is computed locally and deterministically, so it is instant and private. Ideal for FPV and drone-build apps, UAV-design and motor-selection tools, hobbyist calculators, and maker sites. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Estimates — bench-test motors at your voltage and prop. For battery runtime use a battery 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/drone-api/..."
```

## Pricing
- **Free** (Free) — 750 calls/Mo, 2 req/s
- **Starter** ($4/Mo) — 18,000 calls/Mo, 8 req/s
- **Pro** ($15/Mo) — 105,000 calls/Mo, 20 req/s
- **Mega** ($47/Mo) — 360,000 calls/Mo, 48 req/s

## Endpoints

### Drone

#### `GET /v1/disk-loading` — Rotor disk loading

**Parameters:**
- `auw_g` (query, required, string) — All-up weight in grams Example: `1200`
- `motor_count` (query, required, string) — Number of motors Example: `4`
- `prop_diameter_in` (query, required, string) — Prop diameter in inches Example: `5`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/drone-api/v1/disk-loading?auw_g=1200&motor_count=4&prop_diameter_in=5"
```

**Response:**
```json
{
    "data": {
        "note": "Disk loading = all-up weight ÷ total rotor disk area. Lower is more efficient — big slow props move more air for less power, giving longer flight and a smoother hover, which is why endurance and heavy-lift rigs run large props at low disk loading. Racers accept high disk loading for response.",
        "inputs": {
            "auw_g": 1200,
            "motor_count": 4,
            "prop_diameter_in": 5
        },
        "disk_loading_g_cm2": 2.368,
        "disk_loading_lb_ft2": 4.85,
        "total_disk_area_cm2": 506.7
    },
    "meta": {
        "timestamp": "2026-06-06T23:53:56.581Z",
        "request_id": "89cac87d-4bcd-41ea-9432-f2fa9f67bb58"
    },
    "status": "ok",
    "message": "Disk loading",
    "success": true
}
```

#### `GET /v1/hover-throttle` — Hover throttle and headroom

**Parameters:**
- `motor_thrust_g` (query, required, string) — Max thrust per motor in grams Example: `800`
- `motor_count` (query, required, string) — Number of motors Example: `4`
- `auw_g` (query, required, string) — All-up weight in grams Example: `1200`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/drone-api/v1/hover-throttle?motor_thrust_g=800&motor_count=4&auw_g=1200"
```

**Response:**
```json
{
    "data": {
        "note": "Hover throttle ≈ all-up weight ÷ total max thrust. A good build hovers around 40–50 %, leaving plenty of headroom for manoeuvres and wind; hovering above ~60 % means the craft is overweight or underpowered and will feel sluggish and run hot. Lower hover throttle also means cooler motors and longer flights.",
        "inputs": {
            "auw_g": 1200,
            "motor_count": 4,
            "motor_thrust_g": 800
        },
        "headroom_pct": 62.5,
        "hover_throttle_pct": 37.5
    },
    "meta": {
        "timestamp": "2026-06-06T23:53:56.673Z",
        "request_id": "c5393c34-673b-4b33-8a93-0508a8c96947"
    },
    "status": "ok",
    "message": "Hover throttle",
    "success": true
}
```

#### `GET /v1/thrust-weight` — Thrust-to-weight ratio

**Parameters:**
- `motor_thrust_g` (query, required, string) — Max thrust per motor in grams Example: `800`
- `motor_count` (query, required, string) — Number of motors Example: `4`
- `auw_g` (query, required, string) — All-up weight in grams Example: `1200`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/drone-api/v1/thrust-weight?motor_thrust_g=800&motor_count=4&auw_g=1200"
```

**Response:**
```json
{
    "data": {
        "note": "Thrust-to-weight = total max motor thrust ÷ all-up weight. Aim for at least 2:1 so the craft has authority to hold position and recover; freestyle wants 3–5:1, heavy-lift/cinematic can live near 1.5:1. Below 2:1 it feels mushy and struggles in wind.",
        "inputs": {
            "auw_g": 1200,
            "motor_count": 4,
            "motor_thrust_g": 800
        },
        "flight_class": "agile / freestyle",
        "total_thrust_g": 3200,
        "thrust_to_weight": 2.67
    },
    "meta": {
        "timestamp": "2026-06-06T23:53:56.763Z",
        "request_id": "5856a586-5a5e-42a5-ba0d-7eef3bddf3d8"
    },
    "status": "ok",
    "message": "Thrust-to-weight",
    "success": true
}
```

### Meta

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

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

**Response:**
```json
{
    "data": {
        "notes": "Grams & inches. TWR = total thrust ÷ AUW (aim ≥2:1); disk loading = AUW ÷ total disk area (lower = efficient); hover ≈ AUW ÷ total thrust (target 40–50 %). Estimates — bench-test motors at your voltage/prop. For battery runtime use a battery API.",
        "service": "drone-api",
        "endpoints": {
            "GET /v1/meta": "This document.",
            "GET /v1/disk-loading": "Rotor disk loading from weight, motor count and prop diameter.",
            "GET /v1/thrust-weight": "Thrust-to-weight ratio from motor thrust, count and all-up weight.",
            "GET /v1/hover-throttle": "Hover throttle % and headroom."
        },
        "description": "Multirotor (drone) flight maths: thrust-to-weight ratio, rotor disk loading, and hover throttle."
    },
    "meta": {
        "timestamp": "2026-06-06T23:53:56.817Z",
        "request_id": "c103fa67-5f85-43d1-b68a-d351c570022d"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}
```


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