> ## Documentation Index
> Fetch the complete documentation index at: https://docs.agribackup.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Assess Deforestation Risk for a Coordinate Point

> Run a pre-assessment EUDR risk check on a lat/lon coordinate using Sentinel-2 satellite analysis and Country Risk Matrix lookups.

When you have a single geographic point — such as a farm centroid or sourcing origin — you can request a pre-assessment risk evaluation without registering a batch. Submit a latitude and longitude pair and AgriBackup will run live Sentinel-2 NDVI deforestation analysis and Country Risk Matrix lookups, returning a full risk profile in a single synchronous call. No polygon geometry, no batch creation, no quota consumption.

**`POST /api/v1/enterprise/eudr/risk/assess-coordinate`**

## Request Body

<ParamField body="latitude" type="number" required>
  The geographic latitude of the point to assess, expressed as a decimal degree (`double`). Valid range is `-90.0` to `90.0`. Positive values are north of the equator; negative values are south.

  **Example:** `-1.2921`
</ParamField>

<ParamField body="longitude" type="number" required>
  The geographic longitude of the point to assess, expressed as a decimal degree (`double`). Valid range is `-180.0` to `180.0`. Positive values are east of the Prime Meridian; negative values are west.

  **Example:** `36.8219`
</ParamField>

## Code Examples

<CodeGroup>
  ```python Python theme={null}
  import agribackup
  from agribackup.rest import ApiException

  configuration = agribackup.Configuration(host="https://live.agribackup.com/api/v1")
  configuration.api_key["ApiKeyAuth"] = "sk_live_YOUR_API_KEY"

  payload = {
      "latitude": -1.2921,
      "longitude": 36.8219
  }

  with agribackup.ApiClient(configuration) as api_client:
      try:
          api_instance = agribackup.EnterpriseRiskManagementApi(api_client)
          response = api_instance.assess_coordinate_risk(body=payload)
          print(response)
      except ApiException as e:
          print("Exception when calling API: %s\n" % e)
  ```

  ```javascript Node.js theme={null}
  import { AgriBackupClient } from "@agribackup/sdk";

  const client = new AgriBackupClient({
    apiKey: "sk_live_YOUR_API_KEY",
    baseUrl: "https://live.agribackup.com/api/v1",
  });

  async function assessCoordinateRisk() {
    try {
      const response = await client.management.assessCoordinateRisk({
        latitude: -1.2921,
        longitude: 36.8219,
      });
      console.log(response);
    } catch (error) {
      console.error(error);
    }
  }

  assessCoordinateRisk();
  ```

  ```bash cURL theme={null}
  curl --request POST \
    --url https://live.agribackup.com/api/v1/enterprise/eudr/risk/assess-coordinate \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer sk_live_YOUR_API_KEY" \
    --data '{
      "latitude": -1.2921,
      "longitude": 36.8219
    }'
  ```
</CodeGroup>

## Response

A `200 OK` response includes the echoed coordinates alongside the full satellite and country risk analysis. All required fields are guaranteed present; optional fields such as `countryCode` and `countryName` may be `null` for coordinates in unmapped regions.

```json theme={null}
{
  "latitude": -1.2921,
  "longitude": 36.8219,
  "countryCode": "KEN",
  "countryName": "Kenya",
  "countryRiskLevel": "STANDARD",
  "countryRiskJustification": "Standard default risk assigned",
  "satelliteAnalysisState": "COMPLETED",
  "deforestationDetected": false,
  "deforestationProbability": 0.05,
  "ndviBaseline": 0.72,
  "ndviCurrent": 0.70,
  "ndviChange": -0.02,
  "dataSource": "COPERNICUS-SENTINEL-2"
}
```

<ResponseField name="latitude" type="number">
  The latitude value submitted in the request, echoed back for confirmation.
</ResponseField>

<ResponseField name="longitude" type="number">
  The longitude value submitted in the request, echoed back for confirmation.
</ResponseField>

<ResponseField name="countryCode" type="string">
  ISO-3166-1 alpha-3 country code reverse-geocoded from the submitted coordinate (e.g., `KEN`, `BRA`, `IDN`). Returns `null` if the point falls in international waters or an unmapped territory.
</ResponseField>

<ResponseField name="countryName" type="string">
  Human-readable name of the detected country. Returns `null` under the same conditions as `countryCode`.
</ResponseField>

<ResponseField name="countryRiskLevel" type="string">
  The EUDR Country Risk Matrix classification for the detected country. One of `LOW`, `STANDARD`, or `HIGH`. A `HIGH` classification means you will need to supply additional due-diligence evidence before submitting a Due Diligence Statement.
</ResponseField>

<ResponseField name="countryRiskJustification" type="string">
  A plain-language explanation for the assigned risk level derived from the Country Risk Matrix dataset.
</ResponseField>

<ResponseField name="satelliteAnalysisState" type="string">
  The completion state of the Sentinel-2 satellite analysis. Possible values:

  * `COMPLETED` — analysis finished successfully
  * `PHASE_2_SAR_FAILOVER_PENDING` — optical imagery was insufficient; SAR fallback queued
  * `UNSUPPORTED_OR_EMPTY_ACQUISITION` — no satellite data available for this coordinate
</ResponseField>

<ResponseField name="deforestationDetected" type="boolean">
  `true` if the live analysis triggered a deforestation alert for the assessed point; `false` otherwise.
</ResponseField>

<ResponseField name="deforestationProbability" type="number">
  A decimal value between `0.0` and `1.0` representing the NDVI-derived probability of deforestation activity at this coordinate. Values above `0.30` indicate elevated risk.
</ResponseField>

<ResponseField name="ndviBaseline" type="number">
  The historical baseline NDVI index for the point, used as the reference for change detection.
</ResponseField>

<ResponseField name="ndviCurrent" type="number">
  The most recent NDVI index reading from the latest available Sentinel-2 acquisition.
</ResponseField>

<ResponseField name="ndviChange" type="number">
  The delta between `ndviCurrent` and `ndviBaseline`. Negative values indicate vegetation loss. Values below `-0.10` should be investigated further.
</ResponseField>

<ResponseField name="dataSource" type="string">
  The satellite programme that provided the imagery for this analysis. Typically `COPERNICUS-SENTINEL-2`; SAR fallback analyses will report `SENTINEL_1_SAR`.
</ResponseField>

## Error Responses

| HTTP Status             | Error Code          | Description                                                                                                                                        |
| ----------------------- | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `400 Bad Request`       | `VALIDATION_FAILED` | One or both coordinate values are missing, non-numeric, or out of the valid range (`latitude` must be −90 to 90; `longitude` must be −180 to 180). |
| `401 Unauthorized`      | `UNAUTHORIZED`      | The `Authorization` header is absent or the bearer token is not recognised.                                                                        |
| `403 Forbidden`         | `FORBIDDEN`         | Your API key lacks the required scope to call risk assessment endpoints.                                                                           |
| `429 Too Many Requests` | `RATE_LIMITED`      | You have exceeded the hourly rate limit. Inspect `X-RateLimit-Reset` to determine when your window resets.                                         |

```json theme={null}
{
  "code": "VALIDATION_FAILED",
  "message": "Invalid coordinate format or out of bounds",
  "details": [
    {
      "code": "OUT_OF_RANGE",
      "field": "latitude",
      "issue": "Latitude must be between -90.0 and 90.0"
    }
  ]
}
```
