/api/v1/regulatory/required-fieldsGet required fields
Returns the required and anticipated fields for a passport of the given category, with the EU regulation article each field rests on, its access tier (public / restricted / authority), and — for batteries — whether the data is usually held by the maker, a supplier, or the operator. Without group, the endpoint returns a summary: total counts broken down per group and per access tier, plus requiredByHolder (battery only) grouping required fields by data source. With group, it returns the full field list for that group.
Available on every plan. Counts one scope answer against the per-company answer cap (~100 answers per day, ~30 per minute, shared across the dashboard, API, and the DPP Assistant). At the cap the endpoint returns 429 scope_answer_cap. An unknown category returns 400 invalid_input with the allowed list of template categories. An invalid subType for the given category also returns 400. For batteries, subType filters requiredBy the same way the compliance engine does.
Add X-Source: assistant when calling on behalf of the DPP Assistant MCP server — the answer is then signed by the assistant and the OAuth account gate applies (verified, non-disposable email required). API keys bypass the account gate.
Query parameters
- categoryrequired
string
Template category key — e.g.
battery,detergents,toys. Returns 400invalid_inputwith theallowedlist when not recognised.e.g. detergents
- group
string
Template group key (the
categoryfield on each template field). When absent, returns a summary; when present, returns the full field list for that group.e.g. general_info
- subType
string
Battery sub-type —
EV,LMT, orindustrial_gt_2kwh. FiltersrequiredBythe same way the compliance engine does. Returns 400 when the category has no sub-types or the value is not recognised.e.g. industrial_gt_2kwh
- locale
string
Response language for the
answertext —en,bg,de, orit. Defaults to theAccept-Languageheader, thenen.e.g. en
Headers
- Authorizationrequired
string
Bearer <token>— either atp_API key (Developer → API Keys; simplest, for server-to-server) or an OAuth 2.0 access token (Developer → OAuth Apps; for user-authorized apps, scoped + revocable). The Authentication page has the full OAuth flow and scope list.e.g. Bearer tp_REDACTED_xxxxxxxxxxxx
Request
curl -sS "https://app.tracepass.eu/api/v1/regulatory/required-fields?category=detergents&locale=en" \
-H "Authorization: Bearer tp_REDACTED_xxxxxxxxxxxx"Response
{
"status": "answered",
"answer": "detergents passports require 12 fields now, with 4 additional fields anticipated.",
"locale": "en",
"data": {
"category": "detergents",
"locale": "en",
"summary": {
"requiredNow": 12,
"anticipated": 4,
"optional": 61,
"byGroup": {
"product_id": { "required": 4, "anticipated": 0, "dynamic": 0, "total": 11 },
"economic_operator": { "required": 6, "anticipated": 0, "dynamic": 0, "total": 11 },
"composition": { "required": 0, "anticipated": 1, "dynamic": 0, "total": 11 },
"data_carrier": { "required": 2, "anticipated": 3, "dynamic": 0, "total": 8 },
"…": {}
},
"byAccessTier": { "public": 64, "restricted": 10, "authority": 3 }
}
},
"profileUsed": [],
"learnable": [],
"citations": [
{ "celex": "32026R0405", "ref": "Annex VI Part A, point (a)", "url": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32026R0405" },
"…"
],
"ruleIds": [],
"asOf": "2026-10-09",
"ruleStatus": "verified",
"machineTranslated": false,
"disclaimer": "Regulatory information as of 9 Oct 2026, not legal advice. Check the cited articles before relying on it. — TracePass"
}