Noxdren 0.1.2

dotnet add package Noxdren --version 0.1.2
                    
NuGet\Install-Package Noxdren -Version 0.1.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Noxdren" Version="0.1.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Noxdren" Version="0.1.2" />
                    
Directory.Packages.props
<PackageReference Include="Noxdren" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Noxdren --version 0.1.2
                    
#r "nuget: Noxdren, 0.1.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Noxdren@0.1.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Noxdren&version=0.1.2
                    
Install as a Cake Addin
#tool nuget:?package=Noxdren&version=0.1.2
                    
Install as a Cake Tool

Noxdren .NET SDK

Official .NET client for the Noxdren API — battery-aware drone range (RangeIQ) and multi-leg mission analysis (RangeIQ+). .NET 8+.

dotnet add package Noxdren

Quickstart

using Noxdren;

using var client = new NoxdrenClient("ndx_...");   // your key from app.noxdren.com

// 1. Available drones
var drones = await client.Drones.ListAsync();
foreach (var d in drones.List("drones"))
    Console.WriteLine(d.Str("key"));

// 2. Range rings around a launch point
var r = await client.RangeIq.AnalyzeAsync(new RangeIqRequest
{
    UserLat = 37.5,
    UserLon = -122.3,
    SelectedDroneKey = "dji_mavic_3",
    WindSpeed = 6.0,
    WindDirection = 270,
});
foreach (var ring in r.Obj("result")!.List("rings"))
    Console.WriteLine($"{ring.Str("label")} @ {ring.Num("battery_threshold_pct")}%");

// 3. Multi-leg mission from waypoints
var m = await client.Missions.AnalyzeGeometryAsync(new MissionRequest
{
    HomeLat = 37.5,
    HomeLon = -122.3,
    DroneKey = "dji_mavic_3",
    Waypoints = new List<Waypoint>
    {
        new() { Lat = 37.50, Lon = -122.30, AltitudeM = 80 },
        new() { Lat = 37.51, Lon = -122.29, AltitudeM = 80, HoverTimeS = 10 },
        new() { Lat = 37.52, Lon = -122.31, AltitudeM = 100 },
    },
    Weather = new Weather { WindSpeedMps = 6.0, WindDirDeg = 270 },
});
Console.WriteLine(m.Obj("result")!.Str("mission_verdict"));  // complete | marginal | cannot_complete

Read responses with typed navigation: r.Obj("result")!.List("rings")[0].Str("label"), or r.Raw for the parsed dictionary.

Authentication

Your API key is sent as the X-API-Key header on every request:

using var client = new NoxdrenClient("ndx_...");

Error handling

Every failure is a typed exception:

try
{
    await client.RangeIq.AnalyzeAsync(req);
}
catch (AuthenticationException) { /* 401 */ }
catch (ValidationException e) { Console.WriteLine($"{e.Code} {e.Message}"); /* 400/422 */ }
catch (RateLimitException e) { Console.WriteLine($"retry after {e.RetryAfter}s"); /* 429 */ }
catch (NoxdrenException e) { Console.WriteLine($"{e.Code} {e.RequestId}"); /* catch-all */ }

Transient errors (429, 5xx, network) are retried automatically with backoff that respects Retry-After. Tune via the maxRetries constructor argument.

Configuration

new NoxdrenClient(
    apiKey: "ndx_...",
    baseUrl: "https://api.noxdren.com",   // override for testing
    timeoutSeconds: 30,
    maxRetries: 2);

What's covered

Method Endpoint
client.Drones.ListAsync() / .GetAsync(key) GET /v1/drones, /v1/drones/{key}
client.RangeIq.AnalyzeAsync(...) POST /v1/rangeiq/analyze
client.Missions.AnalyzeGeometryAsync(...) POST /v1/missions/analyze-geometry
client.HealthAsync() / .VersionAsync() GET /v1/health, /v1/version

Full field reference: https://docs.noxdren.com · live schema: https://api.noxdren.com/openapi.json.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.2 120 5/30/2026