---
title: "Operator + supplier + product + geolocation → signed Annex II Due Diligence Statement."
method: POST
path: "/v1/dds/generate"
tags: ["agent"]
---

# Operator + supplier + product + geolocation → signed Annex II Due Diligence Statement.

`POST /v1/dds/generate`

## Request

- Base URL: `https://eudr.dev`
- URL: `https://eudr.dev/v1/dds/generate`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://eudr.dev/oauth/authorize`, token URL `https://eudr.dev/oauth/token`, scopes: `eudr:write`)

Runs the 7-stage compile pipeline: geo → forest → legality → tenure → risk → dds → settle. Returns a SignedReceipt envelope (ed25519, CIDv1).

## Request body

- DDSGenerateBody: Either this shape, or a sample scenario as published at /samples/scenarios/*.json (with `production` for `geolocation` and `product.quantity_kg` for `net_mass_kg`), bare or wrapped as {"scenario": ...}. A missing field is named in the 400.
  - `operator` object, required
    - `name` string, required
    - `country_of_establishment` string, required: ISO-3166-1 alpha-2
    - `address` string
    - `eori` string
    - `role` 'operator' | 'trader'
  - `supplier` object, required
    - `name` string, required
    - `id` string, required
    - `country` string
    - `address` string
    - `email` string
  - `product` object, required
    - `hs_code` string, required
    - `description` string, required
    - `net_mass_kg` number, required
    - `trade_name` string
    - `scientific_name` string
  - `geolocation` object, required
    - `country` string, required: ISO-3166-1 alpha-2 country of production
    - `harvest_window` string, required
    - `plot_geojson` GeoJSONGeometry, required: GeoJSON Geometry — Polygon, MultiPolygon, or Point. WGS84 (EPSG:4326). Coordinates ordered [lng, lat].
      - `type` 'Polygon' | 'MultiPolygon' | 'Point', required
      - `coordinates` unknown, required
    - `plot_id` string: The plot's own id (a field, cadastral or cooperative code); it is filed under it.
    - `plot_area_ha` number: For a Point plot: its area in hectares. Art. 2(28) allows a Point only for a plot of 4 ha or less; over 4 ha is refused.
    - `additional_plots` object[]: Every further plot of the consignment.
      - `plot_id` string, required
      - `plot_geojson` GeoJSONGeometry, required: GeoJSON Geometry — Polygon, MultiPolygon, or Point. WGS84 (EPSG:4326). Coordinates ordered [lng, lat].
        - `type` 'Polygon' | 'MultiPolygon' | 'Point', required
        - `coordinates` unknown, required
      - `country` string: When the plot is in another country than the consignment's.
      - `harvest_window` string
      - `quantity_kg` number: This plot's share; undeclared shares split the rest evenly.
      - `area_ha` number: For a Point plot: its area in hectares (4 ha or less).
    - `country_subregion` string
  - `producer` object
    - `name` string
    - `id` string

## Response `200`

Task started; poll /a2a/tasks/{id} until state=completed.

- object

## Other responses

- `402`: The organisation's credit wallet does not cover this compile. Nothing was charged and nothing was compiled.
- `429`: Rate limit

---

[API](https://skmtc.dev/eudr/apis/eudr-dev-eu-deforestation-regulation-compliance-api.md) · [All operations](https://skmtc.dev/eudr/apis/eudr-dev-eu-deforestation-regulation-compliance-api/llms.txt) · [OpenAPI document](https://skmtc.dev/eudr/apis/eudr-dev-eu-deforestation-regulation-compliance-api/revisions/ddffcc4295bf?raw)
