Documentation

One endpoint, three response formats.

The public endpoint and self-serve keys are being finalised with our first group of operators. This is the interface you will integrate against — the shapes below are stable.

Authentication

Every request carries a bearer key. Keys are issued per environment so you can keep staging traffic out of your production usage.

Authorization: Bearer <your-key>

POST /analyze

Submit one RGB frame as multipart form data. A field boundary is optional and raises confidence by keeping neighbouring plots out of the statistics.

POST https://api.nabhya.tech/v1/analyze
Authorization: Bearer <your-key>
Content-Type: multipart/form-data

file=@block_north_0142.jpg
aoi=@boundary.geojson    # optional
formats=png,json,geotiff
{
  "request_id":        "req_8f2c41",
  "model":             "nabhya-ndvi-1.0.0-fp16",
  "vigour_mean":       0.5625,
  "vigour_range":      [0.48, 0.63],
  "canopy_cover":      0.636,
  "worst_zone_share":  0.1002,
  "confidence":        "medium",
  "confidence_reasons": ["no aoi supplied"],
  "analysed_share":    0.9896,
  "panels": {
    "vigour":   "https://.../vigour.png",
    "zones":    "https://.../zones.png",
    "canopy":   "https://.../canopy.png",
    "excluded": "https://.../excluded.png"
  },
  "geotiff": "https://.../vigour.tif"
}

Batch

Submit a whole flight and poll for completion. Available on higher-volume accounts.

POST /v1/batches          # create, returns batch_id
POST /v1/batches/:id/items # add frames
GET  /v1/batches/:id       # status + per-frame results

Errors

400 invalid_image
The file could not be decoded as JPG, PNG or GeoTIFF.
400 invalid_aoi
The AOI is not valid GeoJSON, or does not intersect the frame.
401 unauthorized
Missing or revoked bearer key.
413 payload_too_large
Frame exceeds the size limit for your plan.
422 no_vegetation
Too little canopy in the frame to rank. Returned with confidence low.
429 rate_limited
Slow down, or move to a batch endpoint.
500 inference_failed
Retry once. If it repeats, send us the request id.

Rate limits & versioning

Rate limits
Per-key, returned on every response as X-RateLimit-Remaining.
Versioning
The version is in the path (/v1). Model versions are reported per response so you can pin behaviour.
Retention
Frames are processed and results returned; retention terms are set in your agreement.

Get a result

Send us one frame.

If you have a recent RGB flight sitting on a drive, send a single frame and we'll return the full result for it — free, no account. It's the fastest way to find out whether this is useful to you.

Returned
Vigour map, zones, canopy mask, summary
Turnaround
Same day, seconds of compute
Cost
Free during onboarding

Your imagery stays yours. We don't resell or publish it.