Skip to main content
This page takes you from zero to a working integration in five steps. You need curl (or any HTTP client) and access to Settings > API Keys in Polygon One.
There is no sandbox. Every call acts on your live workspace. The records you create below are real — delete them afterwards in the app, or use test names you will recognise.
Prefer Postman or Insomnia? Import the OpenAPI 3.1 spec from https://help.polygon-one.com/api-reference/openapi.json. The same file works with OpenAPI client generators.

1. Create an API key

  1. Open Settings > API Keys and click Create API Key.
  2. For this quickstart, grant articles:write and suppliers:write. Write permissions include read permissions.
  3. Copy the key. It starts with eudr_ — this is historical; the same key works for EUDR and PPWR, provided it has the permissions and the user it acts as has the module enabled.
Store the key in an environment variable or a secret store, never in client-side code. Details: Authentication.

2. Make your first call

Read one article:
Success: 200 with a JSON array. In a new workspace the array is empty ([]). The two most common failures on a first call: More on status codes: Errors & limits.

3. Create a supplier and an article

A POST with one object creates one record and answers synchronously with 201. Supplier — name, email, country and address are required. country is the English country name (e.g. Germany, not DE); address needs street, postalCode and city:
The response is 201 with { "supplier": { "id": "…", … } }. Keep supplier.id. Article — name, internalArticleNr and hsCode are required. A purchase article (the default) also needs a supplier, via supplierId or supplierName:
The response is 201 with { "article": { "id": "…", … } }. EUDR relevance is derived from the HS code. Sending the same internalArticleNr again returns 409 — the article already exists. A 409 with a warnings array means a possible duplicate (same name or EAN); see Duplicate warnings.

4. Send a batch and poll the job

An array (or {"rows": [...]}) is a batch. It runs asynchronously: the API answers 202 with a jobId, and nothing is imported yet.
Poll the job about every 2 seconds until status is completed or failed:
result lists imported, updated, skipped and failed rows. Sending the same batch again is safe: rows that already exist come back as skipped or updated, no duplicates are created. Details: Batch Import (async).

5. Next steps

Recommended integration flows

Order sync, plots and PPWR as end-to-end sequences — which call when.

Batch Import (async)

Articles, suppliers and orders in bulk, job results, error keys, delta sync.

PPWR

Packaging master data, quantities and volume reports.

Geo analysis

Send a plot geometry, read the deforestation analysis, download the report.

Errors & limits

Status codes, rate limit, retries, size limits.