Skip to main content

Official Python SDK for the Noxdren RangeIQ / RangeIQ+ API

Project description

Noxdren Python SDK

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

pip install noxdren

Quickstart

import noxdren

client = noxdren.Client(api_key="ndx_...")   # your key from app.noxdren.com

# 1. See which drones are available
for d in client.drones.list().drones:
    print(d.key)

# 2. Range rings around a launch point
r = client.rangeiq.analyze(
    user_lat=37.5, user_lon=-122.3,
    selected_drone_key="dji_mavic_3",
    wind_speed=6.0, wind_direction=270,
)
for ring in r.result.rings:
    print(ring.label, ring.battery_threshold_pct)

# 3. Multi-leg mission from waypoints
m = client.missions.analyze_geometry(
    home={"lat": 37.5, "lon": -122.3},
    drone="dji_mavic_3",
    waypoints=[
        noxdren.Waypoint(lat=37.50, lon=-122.30, altitude_m=80),
        noxdren.Waypoint(lat=37.51, lon=-122.29, altitude_m=80, hover_time_s=10),
        noxdren.Waypoint(lat=37.52, lon=-122.31, altitude_m=100),
    ],
    weather=noxdren.Weather(wind_speed_mps=6.0, wind_dir_deg=270),
)
print(m.result.mission_verdict)            # "complete" | "marginal" | "cannot_complete"

Responses support attribute access (r.result.rings[0].label) and plain dict access (r["result"]["rings"]) — whichever you prefer.

Authentication

Pass your API key when you construct the client. It's sent as the X-API-Key header on every request.

client = noxdren.Client(api_key="ndx_...")

Error handling

Every failure is a typed exception you can catch:

import noxdren

try:
    client.rangeiq.analyze(user_lat=37.5, user_lon=-122.3, selected_drone_key="dji_mavic_3")
except noxdren.AuthenticationError:
    ...   # 401 — bad/expired key
except noxdren.ValidationError as e:
    print(e.code, e.message)   # 400/422 — fix the request
except noxdren.RateLimitError as e:
    print("retry after", e.retry_after, "s")   # 429
except noxdren.NoxdrenError as e:
    print(e.code, e.request_id)   # catch-all; request_id helps support

Transient errors (429, 5xx, network) are retried automatically with backoff that respects Retry-After. Tune it: Client(api_key=..., max_retries=0).

Configuration

noxdren.Client(
    api_key="ndx_...",
    base_url="https://api.noxdren.com",  # override for testing
    timeout=30.0,
    max_retries=2,
)

What's covered

Method Endpoint
client.drones.list() / .get(key) GET /v1/drones, /v1/drones/{key}
client.rangeiq.analyze(...) POST /v1/rangeiq/analyze
client.missions.analyze_geometry(...) POST /v1/missions/analyze-geometry
client.missions.analyze(mission_file=...) POST /v1/missions/analyze (file upload)
client.health() / .version() GET /v1/health, /v1/version

Full request/response field reference: https://docs.noxdren.com and the live schema at https://api.noxdren.com/openapi.json.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

noxdren-0.1.0.tar.gz (8.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

noxdren-0.1.0-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file noxdren-0.1.0.tar.gz.

File metadata

  • Download URL: noxdren-0.1.0.tar.gz
  • Upload date:
  • Size: 8.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for noxdren-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c66700441ecc6bfc30614a89b0ec618840f0c509df50630cbc56fd7e50883863
MD5 26b301a89d03baacf3dde475a63143c6
BLAKE2b-256 40616fca9e022596b1f6d527ade229d697ca38a7243a666c2265bc740ec0d9d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for noxdren-0.1.0.tar.gz:

Publisher: sdk-python-publish.yml on noxdren/rangeiq-api

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file noxdren-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: noxdren-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for noxdren-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d709c17fe3fbe3777411008ec37a20bc78ff4e86b9301dc08733dc4625e4a670
MD5 db3ee500ca0ac9ae6170d4ce4cf6669a
BLAKE2b-256 3b38a55da92a4b9c84c4a9e544c31e3892aa34a2ca5b6553b0b383cd1e1e7bd9

See more details on using hashes here.

Provenance

The following attestation bundles were made for noxdren-0.1.0-py3-none-any.whl:

Publisher: sdk-python-publish.yml on noxdren/rangeiq-api

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page