What can you connect?
One contract describes application data and operations. Integrations follow organisation permissions and the same validation rules as the dashboard.
Catalogue and packaging sets
Retrieve packaging, identifiers, specifications and sets needed for order fulfilment.
Documents and evidence
Upload files and work with versions, statuses and links to packaging records.
Usage and reporting
Record material movements and prepare data for organisation reports.
A catalogue for stores, ERP and WMS
An integration should refer to the same packaging as a dashboard user. Public identifiers and internal codes connect packaging records with warehouse SKUs. Material, mass, dimensions and usage units give quantities their meaning. Catalogue access can support a store dashboard, a packing application or a purchasing system.
- Packaging and individual components
- Sets, units and conversions
- Dictionaries shared with the application
From catalogue retrieval to a usage event
A typical workflow selects the organisation, retrieves packaging or a set and records actual consumption against an order reference. Integrators should handle split shipments and distinguish material reservations from use. After a network error, do not blindly create a new stock movement: operations documented in the contract use an idempotency key to support safe retries of the same request.
- Stable order and parcel references
- Quantity and unit validation
- Retries and operation results
OpenAPI and Swagger for implementation
Swagger documentation is public and available below without an account or sign-in. Browse operations, data schemas, permissions and error responses. Download the OpenAPI 3.1 contract in Polish or English to build your integration client. Once you have an API key, send authorised requests without a panel session.
- Public Swagger and OpenAPI in Polish and English
- Request, response, filter and pagination schemas
- Authorization: Bearer authentication and revision checks
Keep access to data under control
An API key belongs to a user and an organisation. Configure its scope, expiry or unlimited validity and permitted IP addresses. Revoke a key to stop a connection. Keep the secret on the integration server rather than in storefront code visible to customers.
- A separate key for each connection
- Read and write scopes matched to the workflow
- Handling revoked access, rate limits and validation errors
Swagger documentation
Public documentation for integrators — browse operations and schemas or download the contract without signing in. API requests require a Bearer key; a panel session is not needed.
1. Create an integration key
An authorised person creates a key under Administration → Organizations → API keys. Select the organisation, scopes, expiry and optional IP restrictions. Store the key on your integration server.
2. Retrieve your organisation
Send GET /api/v1/organizations with the Authorization: Bearer header. Use the returned organisation UUID as organizationId in subsequent catalogue, packaging set and other resource requests.
3. Connect your workflows
Select an operation below and check its required scopes, fields and responses. Handle pagination, errors and rate limits. Retry writes requiring Idempotency-Key with the same key and request body.
Your first API request
curl 'https://ppwrlink.pl/api/v1/organizations' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Accept: application/json' \
-H 'X-Locale: en'
Integrator guide — choose your workflow
Paths below are relative to /api/v1/organizations/{organizationId}, unless stated otherwise. Each Swagger operation lists its exact fields and permissions.
Download the integration guide
Order packing and inventory
Catalogue + available stock → set configuration → reservation → consume or release. Alternatively consume a set without a reservation or submit explicit packing-consumptions lines. Choose one path per parcel.
GET /catalog-itemsGET /catalog-items/{catalogItemId}/inventoryGET /packaging-systems/{recordId}/configurationPOST /packaging-systems/{recordId}/reservationsPOST /packing-reservations/{recordId}/consumeGET /packaging-systems/{systemId}/usages
Files, evidence and links
Upload → version processing state → document review → analysis/proposals → fact decision → evidence linkage. Documents, versions and facts have distinct IDs/statuses.
POST /documentsGET /document-versions/{recordId}POST /document-versions/{recordId}/decisionPOST /document-versions/{recordId}/analyzeGET /evidence-proposals?item={catalogItemId}POST /evidence-proposals/{proposalId}/decision
Imports and templates
Retrieve an available template → upload → wait for preview → inspect rows → apply → read status/errors. Upload alone does not commit changes.
POST /importsGET /imports/{recordId}GET /imports/{importId}/rowsPOST /imports/{recordId}/applyGET /imports/{recordId}/result.csv
Passports and recipient access
Data/evidence → draft → publish → recipient grant. New versions need separate access. Subscriptions/updates belong to the key’s user; following is not data adoption.
POST /passportsPOST /passports/{recordId}/publishPOST /passports/{recordId}/sharesGET /sharing-grantsPOST /sharing-grants/{recordId}/revoke
Reports, EPR, BDO and recycled content
Catalogue/assessment/flow exports are queued. EPR/waste: header → lines → review → export. BDO: sources → classification → snapshot → export. None automatically files a declaration with an authority.
POST /reportsGET /reports/{recordId}GET /reports/{recordId}/download
Factors and material carbon footprint
Read sources → prepare factors → select item/set and optional historical basis → calculate → read snapshot. Results do not automatically cover the entire life cycle.
GET /carbon-factors/referencePOST /carbon-factorsPOST /carbon-calculationsGET /carbon-calculations/{recordId}
Packaging catalogue and structure
Order: partners and optional folders/families → catalogue → components and markets. Data history later identifies operation inputs.
GET /dictionariesPOST /partiesPOST /catalog-itemsPOST /catalog-items/{catalogItemId}/componentsPUT /catalog-items/{catalogItemId}/marketsGET /catalog-items/{catalogItemId}/data-versions
Physical movements and reporting flows
supply-events tracks events/balance; flows represents reporting data. A movement can already generate a flow: do not submit both for the same activity.
POST /catalog-items/{catalogItemId}/supply-eventsGET /catalog-items/{catalogItemId}/supply-summaryGET /catalog-items/{catalogItemId}/inventoryGET /flows
Supplier collaboration and gaps
Create request → inspect lines → send email → receive files → review responses. Suppliers use a public link; integrators use an organisation key.
GET /issuesPOST /supplier-requestsGET /supplier-requests/{requestId}/linesPOST /supplier-requests/{recordId}/sendPOST /supplier-requests/{recordId}/lines/{lineId}/review
PPWR assessments and technical evidence
Establish packaging, market and role; prepare reviewed sources. Create registers relevant to the use case. Recording, review and rule results are separate stages. A dossier precedes its EU declaration.
GET /catalog-items/{catalogItemId}/marketsPOST /assessmentsGET /assessments/{recordId}POST /assessments/{recordId}/reviewGET /catalog-items/{catalogItemId}/ppwr-summary
Reuse systems and returnable units
Circulation system → evidence/market confirmations → units → circulation events/review → aggregates and periodic targets. A circulation system is not a packing recipe.
POST /ppwr/reuse-systemsPOST /catalog-items/{catalogItemId}/ppwr/reuse-unitsGET /ppwr/reuse-statistics
Deposits, hospitality and information
Specialised documentary registers. Deposit records describe packaging/membership without handling money; hospitality/end-user information records store assessments/evidence.
POST /ppwr/deposit-schemesGET /ppwr/deposit-schemes/{recordId}POST /ppwr/deposit-schemes/{recordId}/review
Cases, submissions and audit
Register request/case → add responses/events and delivery evidence → review where exposed. External submissions document actions performed outside the application.
POST /ppwr/authority-requestsGET /ppwr/authority-requests/{recordId}GET /audit-log
Dossier and EU declaration
A dossier organises packaging technical evidence. A reviewed dossier can support an EU declaration; PDF generation is separate. EU declarations linked to the item’s dossier, contents, signatory and evidence. Creating a record does not sign for the manufacturer.
POST /catalog-items/{catalogItemId}/ppwr/conformity-dossiersPOST /catalog-items/{catalogItemId}/ppwr/conformity-dossiers/{recordId}/reviewPOST /catalog-items/{catalogItemId}/ppwr/eu-declarationsPOST /catalog-items/{catalogItemId}/ppwr/eu-declarations/{recordId}/reviewPOST /catalog-items/{catalogItemId}/generated-documents
Annual EPR report
Annual EPR reports with lines and review. Export uses the recorded result; it does not file into a national portal.
POST /ppwr/epr-reportsPOST /ppwr/epr-reports/{parentId}/linesGET /ppwr/epr-reports/{parentId}/linesPOST /ppwr/epr-reports/{recordId}/reviewGET /ppwr/epr-reports/{recordId}/export
BDO source data and export
BDO packaging report preparation: sources, classification, snapshot and export. Does not automatically file the annual BDO report or pay fees.
GET /bdo-reports/sources?year=2025POST /bdo-reports/classificationsPOST /bdo-reportsGET /bdo-reports/{recordId}GET /bdo-reports/{recordId}/download?format=xlsx
Receiving webhooks
An authorised user configures the HTTPS endpoint, events and signing secret under Administration → Integrations. Verify X-PPWR-Signature as t=TIMESTAMP,v1=HEX: HMAC-SHA256 over timestamp + dot + raw body, using the complete whsec_… secret without decoding. Compare in constant time and allow at most 300 seconds of clock skew. Durably deduplicate on body event id, validate schema_version and organization_id, and return 2xx only after enqueueing durably. Ordering is not guaranteed. Retries keep event id/body but use fresh signatures. Fetch changed resource state through the API; events do not carry complete document contents. See the contract’s Webhooks section for payload schema and event types.
To send a request, select Authorize and enter your API key. Try it out uses real organisation data — write operations make changes. The key is not retained after a page refresh.
Good to know before you start
Answers to questions about everyday work with the platform.
Is API documentation public?
Yes. Swagger and the OpenAPI 3.1 contract are available on this page without signing in. You can also open ppwrlink.pl/api/documentation or download ppwrlink.pl/api/openapi.json. Browsing requires no key; reading or writing organisation data requires a valid API key and appropriate permissions.
Can I connect custom software?
Yes. A custom application can use documented REST operations with network access, a valid key and the required permissions.
Does the API automatically approve packaging compliance?
The API exposes data and assessment workflows. Saving information or uploading a document does not replace required evidence or an authorised review.
Does an integration need a PPWR Link panel session?
No. External systems authenticate requests through the Authorization: Bearer header using a key created by an authorised person in administration. Keys have scopes, an expiry policy and optional IP restrictions. Integrations do not use the user’s password or browser session.
Plan the connection to your system
Describe the source system and the information to exchange. We will identify API operations and how to map packaging codes and orders.
- 1We will learn how your business works.
- 2We will demonstrate relevant features with a practical example.
- 3We will discuss data import and implementation scope.
Thank you for your message!
Your enquiry has been saved. We will reply to the email address you provided.