Skip to content

API · public beta

The report, in JSON.

Generate the same field report a grower reads, from your product. One request starts the report; one poll returns the written report, the PDF and the CSV. Reports first; the eight indices are underneath.

REST · JSON · GeoJSON · 8 report types · alerts · 200 ha per query · OpenAPI spec

Request
curl -X POST https://api.agroreports.org/v1/reports \
  -H "Authorization: Bearer $AGRO_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "geometry": "fld_champagne_07",
    "reportType": "vineyard-performance",
    "lang": "en"
  }'

The response is the report. See the full structure in the report response.

Reports first

The report first. Then the data underneath.

Three report routes are the product. Five data routes are what the report is built from. The operation id is the same on the REST route and the MCP tool.

  • GET /v1/reports/types

    The eight report types

    MCP tool · list_report_types

  • POST /v1/reports

    Start a full field report

    MCP tool · generate_report

  • GET /v1/reports/:id

    Poll status and read the result

    MCP tool · get_report

  • GET /v1/indices

    Catalog of the eight indices

    MCP tool · list_indices

  • POST /v1/indices/query

    Current values for a polygon

    MCP tool · get_indices

  • POST /v1/indices/timeseries

    History over 1–10 years

    MCP tool · get_index_timeseries

  • POST /v1/indices/burn-severity

    dNBR and USGS class

    MCP tool · compute_burn_severity

  • GET /v1/location

    Place name to bounding box

    MCP tool · find_location

The API returns the same eight reports as the app. Browse them here.

Alerts

Alerts, on the same key.

Create a rule on any index, for any field, with a window and a set of channels. Read the events from the API, receive a signed webhook, or hand the same rule to an agent.

  • POST
    /v1/alerts Create a threshold rule
    MCP · create_alert
  • GET
    /v1/alerts List rules and status
    MCP · list_alerts
  • PATCH
    /v1/alerts/:id Update threshold, window or channels
    MCP · update_alert
  • GET
    /v1/alerts/:id/events Read triggered events
    MCP · get_alert_events

Channels: dashboard · email · webhook · WhatsApp · Telegram. Signed webhooks, one event per crossing.

One response envelope

Every report carries its source.

No report is returned without the field, the scene it came from, the valid-pixel share, the method version and the caveat.

Report response
{
  "report": "rep_champagne_07",
  "type": "vineyard-performance",
  "status": "completed",
  "field": {
    "name": "Champagne, France",
    "area_ha": 0.42
  },
  "scene": {
    "date": "2026-09-12",
    "source": "sentinel-2-l2a",
    "cloud_pct": 0,
    "valid_px": 0.99
  },
  "summary": "Watch: NDMI 0.18 below 0.20.",
  "severity": "watch",
  "actions": ["Irrigate the south rows before the next pass."],
  "risk": "Veraison may stall if the dry spell continues.",
  "artifacts": {
    "pdf": "/reports/rep_champagne_07.pdf",
    "csv": "/reports/rep_champagne_07.csv"
  },
  "provenance": {
    "resolution_m": 10,
    "method_version": "2026.09",
    "caveat": "An index is not a diagnosis."
  }
}

Access

The API is in public beta.

We are onboarding builders who need field-level intelligence in a product, a model or a workflow. Tell us what you are building and we will send a key and the rate card.

What to include

  • What you are building

    A product, an internal tool, a research workflow, an agent.

  • Field count

    Ten fields, ten thousand, or a whole portfolio.

  • Monthly queries

    A rough number is enough; we will size the free tier.

  • Region and crops

    Coverage varies by clear-sky frequency.

  • Timeline

    Pilot, launch, or already in production.

No credit card. A key and the published rate card before any charge.

API questions

What builders ask.

Do I need a GIS team?

No. Send a GeoJSON polygon or a bounding box. You do not need a GIS platform, a shapefile pipeline or a remote-sensing hire.

What is the area limit?

200 ha per query. For larger areas, split the polygon or talk to us about bulk access.

How do reports work?

POST /v1/reports starts an async report. GET /v1/reports/:id returns status, then the written report and links.

Is MCP included?

Yes. MCP authenticates with OAuth 2.1; the quota is shared with the REST API.

Can I use the data commercially?

Yes, under the API terms. Sentinel and Landsat data are free and open; our record, method and report layer are licensed.

Start here

Your field has a report. Read it.

One field report for the grower, the builder and the agent. The report comes first; the API and MCP are how it travels.

Free report · 5 languages · API and MCP in public beta