Learn how to use Coolset APIs to meet Packaging and Packaging Waste Regulation (PPWR) requirements.
The EU Packaging and Packaging Waste Regulation (PPWR) requires companies to track, assess, and report on packaging across their supply chain. Coolset's APIs let you flag packaging products via tags, run packaging risk assessments, and upload supporting evidence — using the same infrastructure as EUDR, without any regulation-specific endpoints.
Products are flagged for PPWR via tags. Two tags are used:
| Tag | Meaning |
|---|---|
PPWR | This product is in scope for PPWR compliance |
PACKAGING | This product is a packaging component used within a PPWR product |
Use PATCH /products/{id}/ to apply tags to existing products:
# Flag a product as in scope for PPWR
curl -X PATCH https://developers-scranton.coolset.com/api/products/456/ \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"tags": ["PPWR"]}'
# Flag a packaging component
curl -X PATCH https://developers-scranton.coolset.com/api/products/789/ \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"tags": ["PACKAGING"]}'Response:
{
"id": 456,
"name": "Cardboard Box 30x20x15cm",
"tags": ["PPWR"],
"pulse_params": {
"identifier": "scranton$product$456",
"model_identifier": "product"
}
}Note the pulse_params.identifier — you'll need this to run the risk assessment in the next step.
Use the pulse_params.identifier from the product response as the identifier field:
curl -X POST https://developers-pulse.coolset.com/api/compliance/risk-assessments/ \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"identifier": "scranton$product$456",
"assessment_type": "ppwr_packaging_assessment"
}'Response:
{
"id": 101,
"identifier": "scranton$product$456",
"assessment_type": "ppwr_packaging_assessment",
"results": {
"risk_level": "low",
"recyclability_score": 0.85,
"recycled_content_percentage": 40
},
"assessment_date": "2025-05-12T10:00:00Z"
}Aggregate assessments run automatically — no need to trigger them manually.
Attach evidence (supplier declarations, material certificates) to your assessment:
# Create document record and get pre-signed upload URL
curl -X POST https://developers-pulse.coolset.com/api/documents/ \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Recycled Content Certificate.pdf",
"content_type": "application/pdf"
}'
# Upload file using the pre-signed URL from the response, then confirm
curl -X POST https://developers-pulse.coolset.com/api/documents/{id}/confirm_upload/ \
-H "Authorization: Bearer YOUR_API_TOKEN"Package all evidence for regulatory submission or audit:
curl -X POST https://developers-pulse.coolset.com/api/compliance/risk-assessments/101/evidence-downloads/ \
-H "Authorization: Bearer YOUR_API_TOKEN" \
--output ppwr-evidence-package.zipIf you want suppliers to contribute their own data, create a Value Chain with type: "supplier" and set send_information_request: true to trigger an invitation email:
curl -X POST https://developers-scranton.coolset.com/api/value-chains/ \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"company_name": "Acme Packaging GmbH",
"type": "supplier",
"country_code": "DE",
"contact_name": "Jana Schmidt",
"contact_email": "jana.schmidt@acme-packaging.de",
"send_information_request": true
}'Once the supplier accepts and connects, their data becomes available in your assessments.
You can also send information requests for specific orders — either individually or in bulk:
# Single information request
curl -X POST https://developers-scranton.coolset.com/api/information-requests/ \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"order_id": 1001,
"value_chain_id": 55
}'
# Bulk information requests (up to 100)
curl -X POST https://developers-scranton.coolset.com/api/information-requests/bulk/ \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"information_requests": [
{"order_id": 1001, "value_chain_id": 55},
{"order_id": 1002, "value_chain_id": 55},
{"order_id": 1003, "value_chain_id": 62}
]
}'| Tag | Use |
|---|---|
PPWR | Marks the product as in scope for PPWR — used to filter which products get assessed |
PACKAGING | Marks the product as a packaging component within a PPWR product |
| Type | Description |
|---|---|
ppwr_packaging_assessment | Assess a single packaging product for PPWR compliance |
Aggregate assessments run automatically after individual assessments complete.
| Level | Action Required |
|---|---|
| Low | Acceptable — download evidence package |
| Medium | Additional checks may be required |
| High | Enhanced due diligence — gather evidence and re-assess |
- PPWR-scoped products tagged with
PPWR - Packaging components tagged with
PACKAGING - Individual packaging assessments run for all in-scope products
- Supporting documents (material certs, declarations) uploaded
- Evidence package downloaded and archived
- Non-compliant products flagged for remediation
PATCH /products/{id}/— Supply Chain API — tag products as PPWR / PACKAGINGPOST /compliance/risk-assessments/— Compliance API — run packaging assessmentsPOST /documents/— Data API — upload evidencePOST /documents/{id}/confirm_upload/— Data API — confirm uploadPOST /compliance/risk-assessments/{id}/evidence-downloads/— Compliance API — download evidence packagePOST /value-chains/— Supply Chain API — invite suppliersPOST /information-requests/— Supply Chain API — request supplier data for an orderPOST /information-requests/bulk/— Supply Chain API — bulk information requests