The platform is API-first, and we’re opening it up progressively. The Detection API is live today; connectivity intelligence, coverage maps, ingest, and the operating picture are on the way. Everything on this page is marked honestly — Live means you can call it this week, In development means it’s being built with design partners, Roadmap means it’s planned.
Send an aerial image. Get smoke and fire back in milliseconds. GPU inference returns detections with bounding boxes, confidence scores, and the exact model version — built for fire agencies, utilities, and platforms that need real-time aerial detection in their own products.
Example · detect
# POST a drone or camera frame curl -X POST https://api.aerialiq.app/v1/detect \ -H "X-API-Key: $API_KEY" \ -F "file=@frame.jpg" # JSON back in milliseconds { "mode": "wildfire", "model_version": "wildfire-v1", "detections": [{ "class_name": "smoke", "confidence": 0.94, "bbox": { "x1": 812.4, "y1": 233.0, "x2": 1106.7, "y2": 498.2 } }], "detection_count": 1, "inference_ms": 38.6 }
The complete reference for POST /v1/detect. Synchronous, image-in / JSON-out, versioned. Log model_version from every response for reproducibility.
Get a key. Access is provisioned per partner organisation — request access and we issue your X-API-Key. Send it on every request. Then POST an image and read the JSON: each detection includes class_name, confidence, and a pixel bbox.
| Base URL | https://api.aerialiq.app/v1 — HTTPS only |
|---|---|
| Authentication | X-API-Key: your_api_key header on every request |
| Rate limit | 30 requests / minute per key — exceeding returns 429 with a Retry-After header |
Runs detection on a single image. The response is synchronous and carries the detections directly. This endpoint is image-only — each call analyses one still frame. For live drone or camera video, see Live feeds & cameras.
| Name | In | Type | Required | Description |
|---|---|---|---|---|
file | form-data | file | yes | The image to analyse. JPEG, PNG, WebP, or BMP — anything else returns 415. Any resolution (the model letterboxes internally; boxes come back in your original image’s pixel coordinates). Up to 25 MB, one image per request. |
mode | query | string | no | wildfire (default). agriculture is on the roadmap. |
cURL
curl -X POST \ "https://api.aerialiq.app/v1/detect?mode=wildfire" \ -H "X-API-Key: your_api_key" \ -F "file=@frame.jpg;type=image/jpeg"
Python
import requests with open("frame.jpg", "rb") as f: resp = requests.post( "https://api.aerialiq.app/v1/detect", params={"mode": "wildfire"}, headers={"X-API-Key": "your_api_key"}, files={"file": ("frame.jpg", f, "image/jpeg")}, timeout=30, ) resp.raise_for_status() for d in resp.json()["detections"]: print(d["class_name"], d["confidence"], d["bbox"])
| Field | Type | Description |
|---|---|---|
mode | string | Mode that ran. |
model_version | string | Exact model that produced the result (e.g. wildfire-v1) — log it for reproducibility. |
image_width / image_height | int | Pixel dimensions of the image you sent. |
detections | array | One object per detection. Empty if nothing found. |
detection_count | int | Number of detections. |
inference_ms | float | Server-side model time, in milliseconds. |
spray_savings | object | null in wildfire mode; carries the savings estimate only when mode=agriculture. |
| Detection object | Type | Description |
|---|---|---|
class_name | string | smoke or fire (wildfire mode). Use this, not class_id. |
class_id | int | Model class index (0 = smoke, 1 = fire). |
confidence | float | 0–1. Detections below the model’s confidence threshold are omitted. |
bbox | object | {x1, y1, x2, y2} — absolute pixel coordinates in the original image, top-left origin. |
x1_norm = bbox.x1 / image_width.| Mode | Status | Detects |
|---|---|---|
wildfire | Available | Smoke & fire in RGB aerial imagery (wildfire-v1). Production-grade smoke detection; fire detection is improving and will be complemented by thermal confirmation. |
| wildfire — thermal | Roadmap | Thermal-band confirmation model, in development. |
agriculture | Roadmap | Weed detection with a spray-savings estimate. Ask us if this is your use case. |
Standard HTTP status codes. Error bodies are {"detail": "…"}.
| Status | Meaning |
|---|---|
200 | Success. |
400 | Empty file, undecodable image, or unknown mode. |
401 | Missing or invalid API key. |
413 | Image exceeds 25 MB. |
415 | Unsupported file type. Send JPEG, PNG, WebP, or BMP. |
429 | Rate limit exceeded. Honour the Retry-After header. |
503 | Model not loaded or inference failed — retry shortly. |
Images are processed in-memory and not retained. No uploaded image is written to disk or stored.
The path is versioned (/v1). Breaking changes ship under a new version; model_version is in every response.
Synchronous, one image per request. Batch is on the roadmap.
30 requests / minute per key. Exceeding it returns 429 with Retry-After.
The image API is for snapshots — one frame per request. To run detection on a live drone or camera feed, two paths detect every frame:
Our edge device sits on your network, pulls your camera streams, runs detection locally, and sends up only alerts. Best for camera fleets — low bandwidth, works offline.
Point your drone or camera stream at our cloud; we infer every frame and push results back live.
Got drones or cameras? Talk to us about edge and stream ingestion — the public image API detects one frame at a time.
Every capability in the platform becomes an API. This is the order we’re building them — shaped by the design partners working with us now.
The Detection API pattern, extended: thermal confirmation, powerline & vegetation faults, road defects. Same request, new detectors.
Per-vehicle link health, outage predictions minutes ahead, and store-and-forward status — embed connectivity intelligence in your fleet tools.
Query predicted connectivity along a planned route, built from your fleet’s own movement — not a generic carrier map.
Push data from the systems a site already runs — fleet management, OEM telemetry, geotech, weather, CCTV — into one schema for fusion.
Query the fused, verified state of a site or fleet, and pull Common Operating Picture layers into the GIS you already use.
Ask plain-language questions over live fleet and site state — answers grounded in telemetry, with the evidence trail attached.
Push verified findings, alerts, and recommended actions into Teams, Slack, CAD, and ticketing — triggered the moment the agent decides.
Deploy and update Vision AI + LLM models on the asset, manage on-device inference, and sync findings when connectivity returns.
Design partners get early access to APIs before they’re public — and shape the endpoints, schemas, and limits around what they’re building. Tell us your use case and we’ll take it from there.
Join the early-access program