List Annex I Entries
List the Annex I CN-code entries of the resolved EUDR scope version —
the enumerable form of the scope table behind the single-code
classifier (GET /regulations/eudr/scope). Use it to drive a
searchable HS-code select so users can only pick valid Annex I
codes, or to mirror the in-force list into your own system.
Reference data: global, not org-scoped — every org sees the same
list. The response is small — under a hundred rows on the current
version — and returned in one envelope; there is no pagination.
meta.count carries the number of rows returned (after filtering) and
entries are ordered by cn_code.
The first example shows three of the 89 entries of 2026-da: coffee
(five accepted subheadings), chapter 49 (in scope, but TRACES accepts
no code, so traces_hs_codes is []) and recovered-paper pulp
470620 (excluded from Annex I).
▶Query params
| Param | Description |
|---|---|
as_of | Optional effective date (YYYY-MM-DD); defaults to today. Resolves the adopted version in force on that date. |
version | Optional explicit version key (e.g. 2023-1115). Bypasses date resolution and may target a draft version to preview a pending Delegated Act — meta.scope_version_status and a meta.notes advisory flag this. |
commodity | Optional. Keep only these EUDR commodities: cattle, cocoa, coffee, palm, rubber, soy, timber. Comma-separated (commodity=coffee,cattle) or repeated (commodity=coffee&commodity=cattle); both give the same result. Any other value, or an empty one, is a 400. |
in_scope | Optional, true or false. Keep only in-scope, or only out-of-scope, entries. Any other value is a 400. |
traces_fileable | Optional, true or false. Keep only entries TRACES can, or cannot, file. Any other value is a 400. |
Filters combine with AND: ?in_scope=true&traces_fileable=false returns
only chapter 49. They narrow data and meta.count only;
meta.superseded is never filtered.
▶Response
Each entry:
Coffee policy note: TRACES acceptance accepts bare 0901 (IMPORT and EXPORT
re-probed on 2026-10-19), and Epoch now allows the bare heading as well as its five subheadings.
Production has not been verified. Coffee acceptance fields and examples here
describe the updated fm-api policy.
| Field | Meaning |
|---|---|
commodity | Canonical EUDR commodity (cattle / cocoa / coffee / palm / rubber / soy / timber) |
cn_code | Annex I CN code, bare digits — chapter (2), heading (4), subheading (6), or tariff (8) granularity |
ex_heading | true when the Annex uses an "ex" prefix: only part of the heading is in scope, confirm the specific product |
description | Annex I product description |
in_scope | false rows are codes removed by a Delegated Act, or products Annex I excludes — listed so a client can badge them rather than treat them as unknown |
traces_hs_codes | The codes TRACES accepts under this entry, each { code, description, label } (label is "<code> — <description>", ready to display). [] when the entry is out of scope, or TRACES accepts no code under it (chapter 49) |
finer_codes_accepted | true when TRACES also accepts finer codes under the entry's own code (e.g. any 6-digit 4403xx under 4403); false when it takes only the listed codes (coffee allows 0901 and its five listed subheadings) |
traces_fileable | true when the entry has at least one code TRACES accepts. false for chapter 49 and for every out-of-scope entry |
out_of_scope_kind | removed or annex_exclusion for an out-of-scope entry; null when in scope |
out_of_scope_reason | Human-readable reason, e.g. excluded from EUDR (bamboo or recovered fibre); no DDS required, or removed from EUDR Annex I by <version source>; no DDS required; null when in scope |
dds_required | false for every out-of-scope entry; true otherwise |
superseded_by | Always null on entries; the map is meta.superseded |
supplementary_unit | TRACES's supplementary-unit rule for the entry's own code: { rule, qualifier, required_for_activities }, rule required (qualifier MTQ, NAR or KSD, on IMPORT and EXPORT) or not_allowed. null when out of scope |
meta carries the resolved version (same shape as the classifier's
meta) plus:
| Field | Meaning |
|---|---|
count | Number of entries returned |
notes | Advisories, e.g. the DRAFT-version warning |
superseded | Superseded CN code → the TRACES-fileable codes that replace it, e.g. "1201": ["120190"], "4012": ["40129030"]. A [] value means superseded with no TRACES-fileable replacement. {} when the version supersedes nothing (2023-1115) |
▶Errors
| Status | Code | When |
|---|---|---|
| 400 | VALIDATION_ERROR | Malformed as_of (impossible calendar date), over-long version, a commodity outside the seven EUDR commodities (or empty), or an in_scope / traces_fileable value other than true / false |
| 401 | UNAUTHORIZED | Missing/invalid API key |
| 403 | FORBIDDEN | Key lacks both eudr:reference and eudr:read |
| 404 | NOT_FOUND | Unknown version, or no adopted version in force for the date |
Required scope:
eudr:referenceoreudr:read