API reference
The Instica EPR API lets your systems keep Products, Places and sales volumes in step, read Obligations and Estimates, and prepare Reports. Every address below is relative to https://app.instica.com/api/v1/epr. The machine-readable OpenAPI document describes the same operations.
Authentication
Send a key in the Authorization header as Bearer <key>. Create keys in Settings, API keys. Live keys start with ik_live_ and test keys with ik_test_; tokens issued to an app you connected start with iat_. A key only reaches the operations its access allows:
- audit: audit:read
- read: catalog:read, reports:read, fees:read, obligations:read
- report: reports:prepare, reports:read
- write: catalog:write, measurements:propose, volumes:write, suppliers:write, imports:write
When you rotate a key, the old secret keeps working for 24 hours so you can deploy the new one without downtime.
Versioning
The current version is 2026-10-01. Send Epr-Version: 2026-10-01 to pin your integration; without it, the version set on the key (or your workspace default) answers. Every response says which version answered in its own Epr-Version header. A version that is not published is refused with status 400 and the code unsupported_api_version. Published versions: 2026-10-01.
Retrying writes safely
Every write accepts an optional Idempotency-Key header. Send a unique value per change; if the network drops and you resend the same key with the same body within 24 hours, you get the first response again with Idempotent-Replayed: true, and nothing is done twice. The same key with a different body is refused with status 422 (idempotency_key_reused); a key whose first request is still running is refused with status 409 (idempotency_in_progress).
Errors
Every error has the same shape. code is stable and safe to branch on; message is written for people; fields names the inputs to fix; request_id matches the X-Request-ID response header, so quote it when you contact support; docs_url links to the explanation.
{
"error": {
"code": "validation_failed",
"message": "Some fields need attention.",
"fields": { "units_sold": ["Enter a whole number."] },
"request_id": "0b8a6f0e-3c1d-4e55-9a51-6f7d2c1b9e40",
"docs_url": "https://app.instica.com/docs/api/errors#validation_failed"
}
}Rate limits
Too many requests in a short time are refused with status 429 and the code rate_limited. The Retry-After header says how many seconds to wait before trying again.
Examples
# List your Products (send the API version you built against)
curl https://app.instica.com/api/v1/epr/skus \
-H "Authorization: Bearer ik_test_..." \
-H "Epr-Version: 2026-10-01"
# Create a Product; resending with the same Idempotency-Key never creates two
curl -X POST https://app.instica.com/api/v1/epr/skus \
-H "Authorization: Bearer ik_test_..." \
-H "Epr-Version: 2026-10-01" \
-H "Idempotency-Key: 6f1c0d2e-order-1042" \
-H "Content-Type: application/json" \
-d '{"sku_code": "MUG-01", "name": "Stoneware mug"}'Operations
Products, places, obligations and reports (264)
POST
/allocation/computeQueue an allocation run for a group and year
API keys can call this. Accepts an Idempotency-Key.
GET
/allocation/groupsList groups
API keys can call this.
GET
/allocation/policiesList policies (filters: group_code, year)
API keys can call this.
PUT
/allocation/policiesSet the method for a group and year (body: group_code, year, method, note)
API keys can call this. Accepts an Idempotency-Key.
GET
/allocation/resultsReturn estimated allocated units, filtered to the caller's entity scope
API keys can call this.
POST
/assetsUpload EPR evidence
API keys can call this. Accepts an Idempotency-Key.
GET
/billing/Get the current billing plan, entitlements and usage
Only a signed-in person can call this.
POST
/billing/checkout/Start checkout or change plan
Only a signed-in person can call this. Accepts an Idempotency-Key.
POST
/billing/checkout/preview/Preview a plan purchase or change
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/billing/checkout/status/Check whether a checkout has activated the plan
Only a signed-in person can call this.
GET
/billing/entitlements/Plan entitlements and limits
Only a signed-in person can call this.
GET
/billing/invoices/Billing invoices
Only a signed-in person can call this.
POST
/billing/portal/Open the billing portal
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/billing/usage/Get the records meter for the current period
Only a signed-in person can call this.
GET
/billing/usage/by-entity/Records used per client entity in a period, as CSV
Only a signed-in person can call this.
GET
/bulk/jobsList bulk jobs, newest first (filters: kind, status)
API keys can call this.
POST
/bulk/jobsQueue a bulk job from JSON rows
API keys can call this. Accepts an Idempotency-Key.
GET
/bulk/jobs/{uid}Return a bulk job
API keys can call this.
GET
/bulk/jobs/{uid}/resultDownload a bulk job's result file
API keys can call this.
GET
/bulk/kindsList bulk job kinds
API keys can call this.
GET
/clientsList your clients and how each one stands
Only a signed-in person can call this.
GET
/clients/focusRead the client you are working on
Only a signed-in person can call this.
PUT
/clients/focusChoose the client you are working on
Only a signed-in person can call this. Accepts an Idempotency-Key.
PATCH
/components/{id}Update a packaging component
API keys can call this. Accepts an Idempotency-Key.
DELETE
/components/{id}Retire a packaging component
API keys can call this. Accepts an Idempotency-Key.
GET
/connectorsList providers
API keys can call this.
GET
/connectors/connections/{uid}Return one connection
API keys can call this.
DELETE
/connectors/connections/{uid}Disconnect: revoke where the provider allows it and delete the stored credentials
API keys can call this. Accepts an Idempotency-Key.
GET
/connectors/connections/{uid}/runsSync history, newest first
API keys can call this.
POST
/connectors/connections/{uid}/syncQueue a sync now (body: `full_resync` true to re-read from the start date)
API keys can call this. Accepts an Idempotency-Key.
POST
/connectors/connections/{uid}/testCheck the stored credentials with one read call
API keys can call this. Accepts an Idempotency-Key.
POST
/connectors/{provider}/keysVerify and store the keys (encrypted)
API keys can call this. Accepts an Idempotency-Key.
GET
/evidence/audit-logList audit events; entity-restricted members are refused
API keys can call this.
GET
/evidence/history/{kind}/{ident}Read the change history of one record
API keys can call this.
GET
/evidence/measurementsList measurements as evidence
API keys can call this.
GET
/exportsList EPR exports
API keys can call this.
POST
/exportsRequest an EPR export
API keys can call this. Accepts an Idempotency-Key.
GET
/feeds/odata/OData v4 service document, `$metadata` and entity set (Power Query, Excel)
API keys can call this.
GET
/feeds/odata/{resource}OData v4 service document, `$metadata` and entity set (Power Query, Excel)
API keys can call this.
GET
/feeds/{feed}.{fmt}Read a feed as CSV or JSON (the key is sent as a header or `?key=`)
API keys can call this.
GET
/fees/accruals/List accrual exports
API keys can call this.
POST
/fees/accruals/Export a saved estimate as an accrual journal for one GL period
API keys can call this. Accepts an Idempotency-Key.
GET
/fees/accruals/{id}/csv/Return the stored CSV unchanged
API keys can call this.
GET
/fees/accruals/{id}/journal/{tool}/Download a saved fee accrual as a Xero, QuickBooks Online or NetSuite journal
API keys can call this.
GET
/fees/category-assignments/List the customer's assignments, optionally for one jurisdiction
API keys can call this.
POST
/fees/category-assignments/Assign (or reassign) a fee category for a material in a jurisdiction
API keys can call this. Accepts an Idempotency-Key.
DELETE
/fees/category-assignments/{id}/Clear a fee-category choice
API keys can call this. Accepts an Idempotency-Key.
GET
/fees/customer-rates/List entered rates, optionally for one schedule
API keys can call this.
POST
/fees/customer-rates/Create or replace the rate for one schedule and category
API keys can call this. Accepts an Idempotency-Key.
DELETE
/fees/customer-rates/{id}/Remove an entered rate
API keys can call this. Accepts an Idempotency-Key.
POST
/fees/estimate/Compute an estimate, and save it when asked
API keys can call this. Accepts an Idempotency-Key.
POST
/fees/estimate/skus/Return one row per SKU with its fee and fee per unit sold
API keys can call this. Accepts an Idempotency-Key.
GET
/fees/estimates/List saved estimates, newest period first
API keys can call this.
GET
/fees/estimates/{id}/Return one saved estimate with its lines and citations
API keys can call this.
GET
/fees/estimates/{id}/approvals/List approval requests for a saved estimate
API keys can call this.
POST
/fees/estimates/{id}/approvals/Ask a second person to approve a saved estimate
API keys can call this. Accepts an Idempotency-Key.
POST
/fees/estimates/{id}/approvals/{uid}/approve/Approve a saved estimate as the second person
API keys can call this. Accepts an Idempotency-Key.
POST
/fees/estimates/{id}/approvals/{uid}/reject/Send a saved estimate back with a note
API keys can call this. Accepts an Idempotency-Key.
GET
/fees/forecast/Return the forecast with its method stated
API keys can call this.
GET
/fees/fx-rates/List stored FX rates
API keys can call this.
POST
/fees/fx-rates/Store a rate; the same pair and date is a conflict (enter a new date instead)
API keys can call this. Accepts an Idempotency-Key.
DELETE
/fees/fx-rates/{id}/Remove a stored rate
API keys can call this. Accepts an Idempotency-Key.
GET
/fees/invoice-uploads/List uploaded invoice files, newest first
API keys can call this.
POST
/fees/invoice-uploads/Upload a PDF, image, CSV or XLSX invoice and queue it to be read
API keys can call this. Accepts an Idempotency-Key.
GET
/fees/invoice-uploads/{id}/Return one upload with its draft, per-field confidence and source snippets
API keys can call this.
POST
/fees/invoice-uploads/{id}/confirm/Save the reviewed draft as an invoice and check it against an estimate
API keys can call this. Accepts an Idempotency-Key.
GET
/fees/invoice-uploads/{id}/file/Download the original invoice file
API keys can call this.
GET
/fees/invoices/List saved invoices
API keys can call this.
POST
/fees/invoices/Save an invoice and compare it with an estimate for the same schedule and period
API keys can call this. Accepts an Idempotency-Key.
GET
/fees/invoices/{id}/Return one invoice with every variance line
API keys can call this.
GET
/fees/schedules/List schedule summaries
API keys can call this.
GET
/fees/schedules/{fee_id}/Return the schedule as published, with the customer's entered rates alongside
API keys can call this.
GET
/fees/settings/Return the settings (defaults when none were saved)
API keys can call this.
PUT
/fees/settings/Save the settings
API keys can call this. Accepts an Idempotency-Key.
GET
/file-flows/connectionsList connections
API keys can call this.
POST
/file-flows/connectionsCreate a connection (credentials are stored encrypted and never returned)
API keys can call this. Accepts an Idempotency-Key.
GET
/file-flows/connections/{uid}Return one connection
API keys can call this.
PATCH
/file-flows/connections/{uid}Change a connection; changing the host clears the pinned SFTP host key
API keys can call this. Accepts an Idempotency-Key.
DELETE
/file-flows/connections/{uid}Delete a connection that no flow uses
API keys can call this. Accepts an Idempotency-Key.
POST
/file-flows/connections/{uid}/generate-keyGenerate a key pair; the private key is stored encrypted, the public key is returned
API keys can call this. Accepts an Idempotency-Key.
POST
/file-flows/connections/{uid}/host-keyPin the host key (body: `fingerprint`, which must match what the server presents now)
API keys can call this. Accepts an Idempotency-Key.
POST
/file-flows/connections/{uid}/testCheck the connection; an unpinned SFTP host returns the presented fingerprint to confirm
API keys can call this. Accepts an Idempotency-Key.
GET
/file-flows/email-inReturn the organization's import address and allowed senders
API keys can call this.
PATCH
/file-flows/email-inSet the allowed senders (addresses or `@domain`); empty allows every member
API keys can call this. Accepts an Idempotency-Key.
GET
/file-flows/email-in/quarantineEmails held for owner approval
API keys can call this.
POST
/file-flows/email-in/quarantine/{uid}/releaseApprove a held email and import its attachments
API keys can call this. Accepts an Idempotency-Key.
POST
/file-flows/email-in/rotateReplace the address token; the old address stops working at once
API keys can call this. Accepts an Idempotency-Key.
GET
/file-flows/feed-keysList feed keys
API keys can call this.
POST
/file-flows/feed-keysCreate a read-only key for one feed; the key is shown once
API keys can call this. Accepts an Idempotency-Key.
DELETE
/file-flows/feed-keys/{uid}Revoke a feed key
API keys can call this. Accepts an Idempotency-Key.
GET
/file-flows/flowsList flows (filter: `direction`)
API keys can call this.
POST
/file-flows/flowsCreate a flow (body: `connection_id`, `direction`, `kind`, `path_pattern`, `schedule`, ...)
API keys can call this. Accepts an Idempotency-Key.
GET
/file-flows/flows/{uid}Return one flow
API keys can call this.
PATCH
/file-flows/flows/{uid}Change a flow
API keys can call this. Accepts an Idempotency-Key.
DELETE
/file-flows/flows/{uid}Delete a flow; its run history is kept
API keys can call this. Accepts an Idempotency-Key.
POST
/file-flows/flows/{uid}/resumeResume a paused flow after fixing its cause
API keys can call this. Accepts an Idempotency-Key.
POST
/file-flows/flows/{uid}/runRun a flow now
API keys can call this. Accepts an Idempotency-Key.
GET
/file-flows/runsRun history, newest first (filter: `flow` id)
API keys can call this.
GET
/file-flows/runs/{uid}Return one run
API keys can call this.
GET
/file-flows/runs/{uid}/error-fileDownload the CSV of rejected rows
API keys can call this.
GET
/filled-templates/{id}/downloadReturn the filled file for the customer to upload to the portal
API keys can call this.
GET
/imports/export/{kind}Return the CSV (entity scope applies; suppliers are org-wide so restricted members are refused)
API keys can call this.
GET
/imports/jobsList jobs, newest first (filters: kind, status)
API keys can call this.
POST
/imports/jobsUpload a file (multipart: file, kind, preset, entity, mapping, materials) and queue its processing
API keys can call this. Accepts an Idempotency-Key.
GET
/imports/jobs/{uid}Return the job
API keys can call this.
GET
/imports/jobs/{uid}/errorsDownload an import job's complete error file
API keys can call this.
POST
/imports/jobs/{uid}/mappingAttach the mapping and queue the job again
API keys can call this. Accepts an Idempotency-Key.
GET
/imports/presetsList presets
API keys can call this.
POST
/imports/previewPreview a table file (multipart: file, preset, mapping, materials); nothing is saved
API keys can call this. Accepts an Idempotency-Key.
POST
/me/organizationSwitch the active organization
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/me/organizationsList the caller's organizations and roles
Only a signed-in person can call this.
GET
/me/personal-dataReturn the caller's personal-data requests
Only a signed-in person can call this.
POST
/me/personal-data/deletionSchedule deletion of the caller's account (step-up required)
Only a signed-in person can call this. Accepts an Idempotency-Key.
POST
/me/personal-data/deletion/{uid}/cancelCancel a scheduled account deletion
Only a signed-in person can call this. Accepts an Idempotency-Key.
POST
/me/personal-data/exportsRequest a personal data export
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/me/personal-data/exports/{uid}/downloadDownload a personal data export
Only a signed-in person can call this.
GET
/measurementsList EPR measurements
API keys can call this.
POST
/measurementsConfirm an EPR measurement
API keys can call this. Accepts an Idempotency-Key.
GET
/measurements/proposalsList measurement proposals
API keys can call this.
GET
/measurements/proposals/{uid}Read a measurement proposal
API keys can call this.
POST
/measurements/proposals/{uid}/confirmConfirm a measurement proposal
Only a signed-in person can call this. Accepts an Idempotency-Key.
POST
/measurements/proposals/{uid}/rejectReject a measurement proposal
Only a signed-in person can call this. Accepts an Idempotency-Key.
POST
/measurements/{uid}/supersedeSupersede an EPR measurement
API keys can call this. Accepts an Idempotency-Key.
POST
/measurements/{uid}/voidVoid an EPR measurement
API keys can call this. Accepts an Idempotency-Key.
GET
/notifications/List notifications
API keys can call this.
GET
/notifications/change-feed/List change notices
API keys can call this.
GET
/notifications/preferences/Return every kind and channel with the caller's effective setting
API keys can call this.
PUT
/notifications/preferences/Apply preference changes
API keys can call this. Accepts an Idempotency-Key.
POST
/notifications/read-all/Mark everything read
API keys can call this. Accepts an Idempotency-Key.
GET
/notifications/unread-count/Return the number of unread notifications
API keys can call this.
POST
/notifications/{uid}/read/Mark one notification read; someone else's notification is a 404
API keys can call this. Accepts an Idempotency-Key.
POST
/public/obligations/previewEvaluate one anonymous entity against the requested regions
API keys can call this. Accepts an Idempotency-Key.
POST
/public/obligations/preview/Evaluate one anonymous entity against the requested regions
API keys can call this. Accepts an Idempotency-Key.
GET
/quality/accessReturn role, read-only status, AI-assist state and the check catalogue
API keys can call this.
GET
/quality/flagsList flags
API keys can call this.
GET
/quality/flags/{id}Return one flag with its check numbers
API keys can call this.
POST
/quality/flags/{id}/assignAssign (or clear with `assignee_id: null`) the flag's assignee
API keys can call this. Accepts an Idempotency-Key.
POST
/quality/flags/{id}/explainExplain a flag; the explanation must be substantive
API keys can call this. Accepts an Idempotency-Key.
POST
/quality/flags/{id}/reopenReopen a resolved or explained flag with a reason
API keys can call this. Accepts an Idempotency-Key.
POST
/quality/flags/{id}/resolveResolve a flag; a note saying what changed is required
API keys can call this. Accepts an Idempotency-Key.
GET
/quality/periods/{id}/gateReturn the flags that stop the period locking (empty means it can lock)
API keys can call this.
GET
/quality/runsList recent runs
API keys can call this.
POST
/quality/runsRun the checks now (optionally for one SKU); AI runs only when AI assist is on
API keys can call this. Accepts an Idempotency-Key.
GET
/registration-packsList stored packs
API keys can call this.
POST
/registration-packsGenerate a pack for an entity, jurisdiction and year
API keys can call this. Accepts an Idempotency-Key.
GET
/registration-packs/{id}Return the pack with its sections and gaps
API keys can call this.
GET
/registration-packs/{id}/downloadReturn the pack file
API keys can call this.
GET
/registrationsList registration numbers
API keys can call this.
POST
/registrationsRecord a registration number the customer received
API keys can call this. Accepts an Idempotency-Key.
GET
/registrations/optionsReturn in-scope entities and every jurisdiction we hold data for
API keys can call this.
GET
/registrations/{id}Return one registration
API keys can call this.
PATCH
/registrations/{id}Change a registration
API keys can call this. Accepts an Idempotency-Key.
DELETE
/registrations/{id}Remove a registration that was entered by mistake
API keys can call this. Accepts an Idempotency-Key.
GET
/regulatory-updates/List the organization's change notices
API keys can call this.
POST
/regulatory-updates/read-all/Mark every notice of the organization read
API keys can call this. Accepts an Idempotency-Key.
GET
/regulatory-updates/unread-count/Return how many notices are unread
API keys can call this.
POST
/regulatory-updates/{uid}/read/Mark one notice read; another organization's notice is a 404
API keys can call this. Accepts an Idempotency-Key.
GET
/reports/periods/{period_id}/journal/{tool}/Download a period's fee accrual journal for Xero, QuickBooks Online or NetSuite
API keys can call this.
GET
/reusable-supplyList the reusable units first supplied
API keys can call this.
POST
/reusable-supplyRecord reusable units first supplied
API keys can call this. Accepts an Idempotency-Key.
PATCH
/reusable-supply/{id}Edit reusable units first supplied
API keys can call this. Accepts an Idempotency-Key.
DELETE
/reusable-supply/{id}Delete reusable units first supplied
API keys can call this. Accepts an Idempotency-Key.
GET
/sampling/estimatesList estimates
API keys can call this.
POST
/sampling/estimatesPropose an estimate for a component from `supplier_declaration`
API keys can call this. Accepts an Idempotency-Key.
POST
/sampling/estimates/{id}/acceptApply the estimate to the component (never over a measured weight)
API keys can call this. Accepts an Idempotency-Key.
POST
/sampling/estimates/{id}/rejectReject the estimate; the component is untouched
API keys can call this. Accepts an Idempotency-Key.
GET
/sampling/plansList plans
API keys can call this.
POST
/sampling/plansCreate a plan; strata and sizes follow the stated formula
API keys can call this. Accepts an Idempotency-Key.
GET
/sampling/plans/{id}Return the plan, its draws, per-stratum variance, open triggers and the tier rollup
API keys can call this.
POST
/sampling/plans/{id}/baselineFreeze the current statistics as the baseline
API keys can call this. Accepts an Idempotency-Key.
POST
/sampling/plans/{id}/checkCompare strata to the baseline and open re-measure triggers
API keys can call this. Accepts an Idempotency-Key.
POST
/sampling/plans/{id}/drawDraw (or top up) the deterministic sample for each stratum
API keys can call this. Accepts an Idempotency-Key.
POST
/sampling/plans/{id}/syncLink pending draws to measurements confirmed since they were drawn
API keys can call this. Accepts an Idempotency-Key.
GET
/sampling/triggersList triggers
API keys can call this.
POST
/sampling/triggers/{id}/clearClear with a note (re-measured, or why the change does not matter)
API keys can call this. Accepts an Idempotency-Key.
POST
/sampling/triggers/{id}/remeasurePut the stratum's draws back to pending
API keys can call this. Accepts an Idempotency-Key.
GET
/shipping-profilesList the organization's shipping profiles with the grams per shipment each implies
API keys can call this.
POST
/shipping-profilesCreate a shipping profile
API keys can call this. Accepts an Idempotency-Key.
PATCH
/shipping-profiles/{id}Edit a shipping profile
API keys can call this. Accepts an Idempotency-Key.
DELETE
/shipping-profiles/{id}Delete a shipping profile
API keys can call this. Accepts an Idempotency-Key.
GET
/shipping-tonnageReturn tonnage rows plus what is missing (filters: period_start, period_end, jurisdiction)
API keys can call this.
GET
/skusList packaging SKUs
API keys can call this.
POST
/skusCreate a packaging SKU
API keys can call this. Accepts an Idempotency-Key.
POST
/skus/importImport packaging SKUs
API keys can call this. Accepts an Idempotency-Key.
GET
/skus/{id}Get a packaging SKU
API keys can call this.
PATCH
/skus/{id}Update a packaging SKU
API keys can call this. Accepts an Idempotency-Key.
DELETE
/skus/{id}Retire a packaging SKU
API keys can call this. Accepts an Idempotency-Key.
GET
/skus/{sku_id}/bundle-componentsList what the SKU contains, and which bundles contain it
API keys can call this.
PUT
/skus/{sku_id}/bundle-components/{component_id}Add a component to the bundle, or change its quantity or dates
API keys can call this. Accepts an Idempotency-Key.
DELETE
/skus/{sku_id}/bundle-components/{component_id}Remove a component from the bundle (``effective_from`` picks one dated row)
API keys can call this. Accepts an Idempotency-Key.
GET
/skus/{sku_id}/componentsList packaging components
API keys can call this.
POST
/skus/{sku_id}/componentsCreate a packaging component
API keys can call this. Accepts an Idempotency-Key.
PUT
/skus/{sku_id}/spec-links/{spec_id}Link the spec to the SKU, or change the units per SKU
API keys can call this. Accepts an Idempotency-Key.
DELETE
/skus/{sku_id}/spec-links/{spec_id}Unlink a shared spec from the SKU (a SKU's own private spec cannot be unlinked)
API keys can call this. Accepts an Idempotency-Key.
GET
/skus/{sku_id}/volumesList SKU state volumes
API keys can call this.
PUT
/skus/{sku_id}/volumesReplace SKU state volumes
API keys can call this. Accepts an Idempotency-Key.
PATCH
/spec-components/{id}Edit any attribute of a component
API keys can call this. Accepts an Idempotency-Key.
DELETE
/spec-components/{id}Retire a component (measurements stay)
API keys can call this. Accepts an Idempotency-Key.
PUT
/spec-components/{id}/layersReplace the layers; the component weight becomes their sum
API keys can call this. Accepts an Idempotency-Key.
GET
/spec-familiesList families with their spec counts
API keys can call this.
POST
/spec-familiesCreate a family
API keys can call this. Accepts an Idempotency-Key.
PATCH
/spec-families/{id}Rename a family or edit its notes
API keys can call this. Accepts an Idempotency-Key.
DELETE
/spec-families/{id}Delete a family; its specs stay and lose the grouping
API keys can call this. Accepts an Idempotency-Key.
GET
/specsList specs; private per-SKU specs only with `include_private=1`
API keys can call this.
POST
/specsCreate a spec
API keys can call this. Accepts an Idempotency-Key.
GET
/specs/{id}Return the spec with components, layers and linked SKUs
API keys can call this.
PATCH
/specs/{id}Update a spec; every linked SKU sees the change
API keys can call this. Accepts an Idempotency-Key.
DELETE
/specs/{id}Retire a spec (its measurement history is kept)
API keys can call this. Accepts an Idempotency-Key.
POST
/specs/{id}/approveApprove the spec's current draft revision
API keys can call this. Accepts an Idempotency-Key.
GET
/specs/{id}/revisionsList the spec's approved revisions, newest first
API keys can call this.
POST
/specs/{spec_id}/componentsCreate a component on a spec shared by every SKU that links it
API keys can call this. Accepts an Idempotency-Key.
GET
/specs/{spec_id}/photosList the spec's photos in display order
API keys can call this.
POST
/specs/{spec_id}/photosUpload a photo of the spec (PNG, JPEG or WebP, up to 10 MB); it goes last
API keys can call this. Accepts an Idempotency-Key.
POST
/specs/{spec_id}/photos/orderSet the display order of the spec's photos
API keys can call this. Accepts an Idempotency-Key.
PATCH
/specs/{spec_id}/photos/{id}Change a photo's caption
API keys can call this. Accepts an Idempotency-Key.
DELETE
/specs/{spec_id}/photos/{id}Delete a photo (evidence images it was copied from are kept)
API keys can call this. Accepts an Idempotency-Key.
GET
/specs/{spec_id}/photos/{id}/fileStream one photo's image
API keys can call this.
GET
/submissionsList report versions
API keys can call this.
GET
/submissions/{id}Return the status, filled templates and the portal walkthrough
API keys can call this.
POST
/submissions/{id}/fillFill the uploaded template using a saved mapping
API keys can call this. Accepts an Idempotency-Key.
GET
/submissions/{id}/receiptDownload the stored receipt
API keys can call this.
POST
/submissions/{id}/receiptStore the receipt file the customer downloaded from the portal
API keys can call this. Accepts an Idempotency-Key.
POST
/submissions/{id}/statusRecord submitted, acknowledged or rejected, with the portal reference
API keys can call this. Accepts an Idempotency-Key.
GET
/supplier-declarationsList declarations
API keys can call this.
POST
/supplier-declarations/{id}/re-requestCreate a renewal request for the declaration's component
API keys can call this. Accepts an Idempotency-Key.
POST
/supplier-documentsStore the upload and create proposals; nothing is measured until a proposal is accepted
API keys can call this. Accepts an Idempotency-Key.
GET
/supplier-documents/{id}/fileDownload a supplier document as an attachment
API keys can call this.
GET
/supplier-proposalsList proposals
API keys can call this.
POST
/supplier-proposalsRecord figures read from a supplier document as a pending proposal
API keys can call this. Accepts an Idempotency-Key.
GET
/supplier-proposals/{id}Return one proposal
API keys can call this.
POST
/supplier-proposals/{id}/acceptAccept the proposal, applying any edits sent in `changes`
API keys can call this. Accepts an Idempotency-Key.
POST
/supplier-proposals/{id}/rejectReject the proposal with an optional note
API keys can call this. Accepts an Idempotency-Key.
GET
/supplier-request-componentsList in-scope active components with their SKU name
API keys can call this.
GET
/supplier-requestsList requests
API keys can call this.
POST
/supplier-requestsCreate a request for chosen components; the response carries the link once
API keys can call this. Accepts an Idempotency-Key.
GET
/supplier-requests/{id}Return one request with its components and seats
API keys can call this.
POST
/supplier-requests/{id}/cancelCancel the request and revoke its links
API keys can call this. Accepts an Idempotency-Key.
POST
/supplier-requests/{id}/remindRecord a reminder, issuing a fresh link (the old one stops working)
API keys can call this. Accepts an Idempotency-Key.
GET
/suppliersList the organization's suppliers
API keys can call this.
POST
/suppliersCreate a supplier
API keys can call this. Accepts an Idempotency-Key.
GET
/suppliers/{id}Return one supplier
API keys can call this.
PATCH
/suppliers/{id}Update name, contact email, notes or active state
API keys can call this. Accepts an Idempotency-Key.
GET
/support/tickets/List the organization's tickets, newest activity first
API keys can call this.
POST
/support/tickets/Open a ticket from the in-app help panel
API keys can call this. Accepts an Idempotency-Key.
GET
/support/tickets/{uid}/Return a ticket and its messages without internal notes
API keys can call this.
POST
/support/tickets/{uid}/messages/Add a customer reply; a closed ticket reopens
API keys can call this. Accepts an Idempotency-Key.
GET
/taxonomyList EPR material categories
API keys can call this.
POST
/teardownsStart a packaging teardown
API keys can call this. Accepts an Idempotency-Key.
GET
/teardowns/{id}Get a packaging teardown
API keys can call this.
GET
/teardowns/{id}/analysisGet teardown analysis
API keys can call this.
POST
/teardowns/{id}/analyzeAnalyze teardown evidence
API keys can call this. Accepts an Idempotency-Key.
POST
/teardowns/{id}/completeComplete a packaging teardown
API keys can call this. Accepts an Idempotency-Key.
GET
/template-mappingsList the organization's saved mappings
API keys can call this.
POST
/template-mappingsSave the mapping for an uploaded template (the file identifies the template)
API keys can call this. Accepts an Idempotency-Key.
POST
/templates/previewReturn the template's headings, a suggested mapping, and any saved mapping for it
API keys can call this. Accepts an Idempotency-Key.
POST
/uploadsIssue an upload URL (body: `kind`, `preset`, `filename`, `entity`); valid for 15 minutes
API keys can call this. Accepts an Idempotency-Key.
POST
/uploads/{token}Upload the file (raw body) and import it
API keys can call this. Accepts an Idempotency-Key.
PUT
/uploads/{token}Upload the file (raw body) and import it
API keys can call this. Accepts an Idempotency-Key.
GET
/walkthroughs/{code}Return ordered steps, each citing its source leaf
API keys can call this.
POST
/workspacesCreate an EPR workspace
API keys can call this. Accepts an Idempotency-Key.
GET
/workspaces/currentGet the current EPR workspace
API keys can call this.
PATCH
/workspaces/currentUpdate the current EPR workspace
API keys can call this. Accepts an Idempotency-Key.
POST
/workspaces/current/accept-termsAccept the current EPR terms
API keys can call this. Accepts an Idempotency-Key.
GET
/workspaces/current/sessionWho is signing in on the start page
API keys can call this.
Keys, webhooks, audit and data rights (46)
GET
/account-closureAccount closure policy and status
Only a signed-in person can call this.
GET
/api-keysList API keys
Only a signed-in person can call this.
POST
/api-keysCreate an API key
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/api-keys/{uid}Get an API key
Only a signed-in person can call this.
DELETE
/api-keys/{uid}Revoke an API key
Only a signed-in person can call this. Accepts an Idempotency-Key.
POST
/api-keys/{uid}/rotateRotate an API key
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/api-versionGet the default API version
Only a signed-in person can call this.
PUT
/api-versionPin the default API version
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/audit-eventsList audit events
API keys can call this. Needs: audit:read.
GET
/audit-events/exportExport audit events as CSV
API keys can call this. Needs: audit:read.
POST
/audit-events/verifyCheck the audit log's hash chain
API keys can call this. Needs: audit:read. Accepts an Idempotency-Key.
GET
/data-deletionsList deletion requests
Only a signed-in person can call this.
POST
/data-deletionsClose the account and delete the organization's data
Only a signed-in person can call this. Accepts an Idempotency-Key.
POST
/data-deletions/{uid}/cancelCancel a scheduled deletion
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/data-exportsList data exports
Only a signed-in person can call this.
POST
/data-exportsRequest a GDPR/CCPA data export
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/data-exports/{uid}/downloadDownload a data export
Only a signed-in person can call this.
GET
/oauth/authorizeValidate an authorization request for the consent screen
Only a signed-in person can call this.
POST
/oauth/authorizeApprove or deny an authorization request
Only a signed-in person can call this. Accepts an Idempotency-Key.
POST
/oauth/introspectIntrospect an access token
API keys can call this. Accepts an Idempotency-Key.
POST
/oauth/registerRegister an OAuth client (dynamic client registration)
API keys can call this. Accepts an Idempotency-Key.
POST
/oauth/revokeRevoke an access token
API keys can call this. Accepts an Idempotency-Key.
POST
/oauth/tokenGet an access token (OAuth2 client credentials)
API keys can call this. Accepts an Idempotency-Key.
GET
/sandboxGet the sandbox organization
Only a signed-in person can call this.
POST
/sandboxCreate the sandbox organization
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/service-accountsList service accounts
Only a signed-in person can call this.
POST
/service-accountsCreate a service account
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/service-accounts/{uid}Get a service account
Only a signed-in person can call this.
DELETE
/service-accounts/{uid}Revoke a service account
Only a signed-in person can call this. Accepts an Idempotency-Key.
POST
/service-accounts/{uid}/rotateRotate a service account
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/teamTeam overview
Only a signed-in person can call this.
POST
/team/external-auditorsInvite an external auditor
Only a signed-in person can call this. Accepts an Idempotency-Key.
PUT
/team/members/{member_uid}/approval-rightGrant or revoke the spec-approval right
Only a signed-in person can call this. Accepts an Idempotency-Key.
PUT
/team/members/{member_uid}/entity-scopeSet a member's entity scope
Only a signed-in person can call this. Accepts an Idempotency-Key.
POST
/team/members/{member_uid}/revoke-external-accessEnd an external auditor's access now
Only a signed-in person can call this. Accepts an Idempotency-Key.
PUT
/team/members/{member_uid}/signing-rightGrant or revoke the report-signing right
Only a signed-in person can call this. Accepts an Idempotency-Key.
POST
/team/transfer-ownershipTransfer ownership
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/webhook-deliveriesList webhook deliveries
API keys can call this. Needs: webhooks:manage.
POST
/webhook-deliveries/{uid}/redeliverRedeliver an event
API keys can call this. Needs: webhooks:manage. Accepts an Idempotency-Key.
GET
/webhook-endpointsList webhook endpoints
API keys can call this. Needs: webhooks:manage.
POST
/webhook-endpointsCreate a webhook endpoint
API keys can call this. Needs: webhooks:manage. Accepts an Idempotency-Key.
GET
/webhook-endpoints/{uid}Get a webhook endpoint
API keys can call this. Needs: webhooks:manage.
PATCH
/webhook-endpoints/{uid}Change a webhook endpoint
API keys can call this. Needs: webhooks:manage. Accepts an Idempotency-Key.
DELETE
/webhook-endpoints/{uid}Delete a webhook endpoint
API keys can call this. Needs: webhooks:manage. Accepts an Idempotency-Key.
POST
/webhook-endpoints/{uid}/rotate-secretRotate a webhook signing secret
API keys can call this. Needs: webhooks:manage. Accepts an Idempotency-Key.
GET
/webhook-eventsList webhook event types
API keys can call this. Needs: webhooks:manage.
Sign-in and security (53)
GET
/identity/audit-retentionReturn the audit-log retention period
Only a signed-in person can call this.
PATCH
/identity/audit-retentionChange the audit-log retention period (step-up required)
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/identity/break-glass-ownersList the owners and which of them are break-glass owners
Only a signed-in person can call this.
PUT
/identity/break-glass-ownersName the break-glass owners (owner only, step-up required)
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/identity/domainsList claimed domains
Only a signed-in person can call this.
POST
/identity/domainsClaim a domain; publish the returned TXT value to verify it
Only a signed-in person can call this. Accepts an Idempotency-Key.
PATCH
/identity/domains/{uid}Turn SSO enforcement on or off (step-up required)
Only a signed-in person can call this. Accepts an Idempotency-Key.
DELETE
/identity/domains/{uid}Remove a domain claim
Only a signed-in person can call this. Accepts an Idempotency-Key.
POST
/identity/domains/{uid}/verifyLook up the TXT record now
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/identity/ip-allowlistReturn the IP allowlist
Only a signed-in person can call this.
PATCH
/identity/ip-allowlistChange the IP allowlist (step-up required)
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/identity/legal-holdsList legal holds
Only a signed-in person can call this.
POST
/identity/legal-holdsPlace a legal hold (step-up required)
Only a signed-in person can call this. Accepts an Idempotency-Key.
POST
/identity/legal-holds/{uid}/releaseRelease a legal hold (step-up required)
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/identity/mfaFactors, assurance level of this session and the org requirement
Only a signed-in person can call this.
DELETE
/identity/mfa/factors/{factor}Remove a factor (step-up required; another factor must remain)
Only a signed-in person can call this. Accepts an Idempotency-Key.
POST
/identity/mfa/recovery-codesGenerate 10 new single-use codes (replacing the old set); shown once
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/identity/mfa/recovery-requestsPending requests for the organization
Only a signed-in person can call this.
POST
/identity/mfa/recovery-requestsOpen a request for a member who lost every factor
Only a signed-in person can call this. Accepts an Idempotency-Key.
POST
/identity/mfa/recovery-requests/selfAsk for a sign-in reset after losing every factor
Only a signed-in person can call this. Accepts an Idempotency-Key.
POST
/identity/mfa/recovery-requests/{uid}/decideApprove or deny
Only a signed-in person can call this. Accepts an Idempotency-Key.
POST
/identity/mfa/recovery-requests/{uid}/operator-decideStaff approval of a sole owner's recovery
Only a signed-in person can call this. Accepts an Idempotency-Key.
POST
/identity/mfa/totp/beginStart authenticator enrolment; the secret is shown once
Only a signed-in person can call this. Accepts an Idempotency-Key.
POST
/identity/mfa/totp/confirmConfirm the authenticator with a first code; the session becomes AAL2
Only a signed-in person can call this. Accepts an Idempotency-Key.
POST
/identity/mfa/verifyVerify a TOTP or recovery code (locked out after repeated failures)
Only a signed-in person can call this. Accepts an Idempotency-Key.
POST
/identity/mfa/webauthn/authenticate/beginReturn request options
Only a signed-in person can call this. Accepts an Idempotency-Key.
POST
/identity/mfa/webauthn/authenticate/completeVerify the assertion; a passkey with user verification reaches AAL2
Only a signed-in person can call this. Accepts an Idempotency-Key.
POST
/identity/mfa/webauthn/register/beginReturn creation options
Only a signed-in person can call this. Accepts an Idempotency-Key.
POST
/identity/mfa/webauthn/register/completeVerify and store the passkey
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/identity/oidc/callbackFinish an OpenID Connect sign-in
API keys can call this.
GET
/identity/oidc/presetsList OpenID Connect presets
Only a signed-in person can call this.
GET
/identity/oidc/{uid}/startStart an OpenID Connect sign-in
API keys can call this.
GET
/identity/providersList SSO connections
Only a signed-in person can call this.
POST
/identity/providersCreate an SSO connection (step-up required)
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/identity/providers/{uid}One connection
Only a signed-in person can call this.
PATCH
/identity/providers/{uid}Edit a connection (step-up required)
Only a signed-in person can call this. Accepts an Idempotency-Key.
DELETE
/identity/providers/{uid}Remove a connection (step-up required)
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/identity/providers/{uid}/rulesList group-to-role rules
Only a signed-in person can call this.
POST
/identity/providers/{uid}/rulesAdd a rule (step-up required)
Only a signed-in person can call this. Accepts an Idempotency-Key.
DELETE
/identity/providers/{uid}/rules/{rule_uid}Remove a rule
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/identity/providers/{uid}/saml-metadataDownload the service-provider metadata
Only a signed-in person can call this.
GET
/identity/scim-tokensList tokens (never the secret)
Only a signed-in person can call this.
POST
/identity/scim-tokensMint a token; the secret is returned once (step-up required)
Only a signed-in person can call this. Accepts an Idempotency-Key.
DELETE
/identity/scim-tokens/{uid}Revoke a token
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/identity/security-policyReturn the policy
Only a signed-in person can call this.
PATCH
/identity/security-policyChange the policy (step-up required)
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/identity/sessionsActive sessions of the caller
Only a signed-in person can call this.
POST
/identity/sessions/revoke-allRevoke every other session of the caller
Only a signed-in person can call this. Accepts an Idempotency-Key.
DELETE
/identity/sessions/{uid}Revoke one of the caller's sessions
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/identity/signin/methodsList enabled sign-in methods
API keys can call this.
POST
/identity/signin/passkey/beginStart a passkey sign-in
API keys can call this. Accepts an Idempotency-Key.
POST
/identity/signin/passkey/completeFinish a passkey sign-in
API keys can call this. Accepts an Idempotency-Key.
GET
/identity/sso/discoverReturn only whether SSO applies and where to start it
API keys can call this.
Instica operations staff (25)
GET
/ops/data-files/Return every jurisdiction, fee and report-format file
API keys can call this.
GET
/ops/data-files/leaves/Return `{pointer, value, status}` for each leaf of `?path=`
API keys can call this.
GET
/ops/data-proposals/List proposals
API keys can call this.
POST
/ops/data-proposals/Create a draft proposal
API keys can call this. Accepts an Idempotency-Key.
GET
/ops/data-proposals/{uid}/Return the proposal with its reviews
API keys can call this.
PATCH
/ops/data-proposals/{uid}/Edit a draft or rejected proposal (proposer only); it returns to draft
API keys can call this. Accepts an Idempotency-Key.
POST
/ops/data-proposals/{uid}/apply/Return the diff and patched file text; an engineer lands them through a normal commit
API keys can call this. Accepts an Idempotency-Key.
POST
/ops/data-proposals/{uid}/approve/Approve; the two-person rule is enforced server-side
API keys can call this. Accepts an Idempotency-Key.
GET
/ops/data-proposals/{uid}/diff/Return the diff (stored for an applied proposal); 409 `stale` when the file changed
API keys can call this.
GET
/ops/data-proposals/{uid}/download/Return an attachment
API keys can call this.
POST
/ops/data-proposals/{uid}/reject/Reject with a comment; the two-person rule is enforced server-side
API keys can call this. Accepts an Idempotency-Key.
POST
/ops/data-proposals/{uid}/submit/Move a draft to submitted (proposer only)
API keys can call this. Accepts an Idempotency-Key.
GET
/ops/impersonation/Cursor-paged history, newest first
API keys can call this.
GET
/ops/impersonation/current/Return the open session or ``{"session": null}``; expired sessions are closed here
API keys can call this.
POST
/ops/impersonation/end/Close the session and audit it
API keys can call this. Accepts an Idempotency-Key.
POST
/ops/impersonation/start/Open a session on the user named by `user_id` or `email`; `reason` is required
API keys can call this. Accepts an Idempotency-Key.
GET
/ops/regulatory/changes/List changes
API keys can call this.
GET
/ops/regulatory/changes/{uid}/Return one change with its diff
API keys can call this.
POST
/ops/regulatory/changes/{uid}/approve/Approve as a second staff member; affected organizations are notified
API keys can call this. Accepts an Idempotency-Key.
GET
/ops/regulatory/changes/{uid}/diff/Return only the unified diff of one change
API keys can call this.
POST
/ops/regulatory/changes/{uid}/dismiss/Dismiss a change as noise
API keys can call this. Accepts an Idempotency-Key.
POST
/ops/regulatory/changes/{uid}/reject/Reject an in-review change (a comment is required); nobody is notified
API keys can call this. Accepts an Idempotency-Key.
POST
/ops/regulatory/changes/{uid}/submit/Put an open change into review with a plain-language summary
API keys can call this. Accepts an Idempotency-Key.
POST
/ops/regulatory/run/Queue a watch run (optionally for some source keys); returns 202
API keys can call this. Accepts an Idempotency-Key.
GET
/ops/regulatory/sources/List watched sources
API keys can call this.
Public (no sign-in) (23)
GET
/public/calendar/{token}.icsReturn the deadline calendar for a feed token
API keys can call this.
GET
/public/jwksReturn the JWKS of every public key that has signed EPR output
API keys can call this.
GET
/public/jwks/Return the JWKS of every public key that has signed EPR output
API keys can call this.
GET
/public/plan-catalogReturn the EPR plan catalog document: prices, limits and plan-gated capabilities
API keys can call this.
GET
/public/plan-catalog/Return the EPR plan catalog document: prices, limits and plan-gated capabilities
API keys can call this.
GET
/public/plansReturn the EPR plan catalog with prices in integer cents
API keys can call this.
GET
/public/plans/Return the EPR plan catalog with prices in integer cents
API keys can call this.
GET
/public/statusReturn the public service status
API keys can call this.
GET
/public/status/Return the public service status
API keys can call this.
GET
/public/supply/{token}Return the request contract: who asks, until when, and for which components
API keys can call this.
POST
/public/supply/{token}Store the supplier's answer as proposals awaiting the customer's confirmation
API keys can call this. Accepts an Idempotency-Key.
GET
/public/supply/{token}/Return the request contract: who asks, until when, and for which components
API keys can call this.
POST
/public/supply/{token}/Store the supplier's answer as proposals awaiting the customer's confirmation
API keys can call this. Accepts an Idempotency-Key.
POST
/public/supply/{token}/documentsStore a supporting file for the request after checking it is an inert PDF or image
API keys can call this. Accepts an Idempotency-Key.
POST
/public/supply/{token}/documents/Store a supporting file for the request after checking it is an inert PDF or image
API keys can call this. Accepts an Idempotency-Key.
GET
/public/termsReturn the current EPR terms document
API keys can call this.
GET
/public/terms/Return the current EPR terms document
API keys can call this.
GET
/public/trustList the public trust documents
API keys can call this.
GET
/public/trust/List the public trust documents
API keys can call this.
GET
/public/trust/{slug}Return one trust document, or 404 `trust_document_not_found`
API keys can call this.
GET
/public/trust/{slug}/Return one trust document, or 404 `trust_document_not_found`
API keys can call this.
GET
/public/verify/{report_hash}Return the verification payload, or 404 `report_not_found`
API keys can call this.
GET
/public/verify/{report_hash}/Return the verification payload, or 404 `report_not_found`
API keys can call this.
SCIM provisioning (15)
GET
/scim/v2/GroupsList groups
API keys can call this.
POST
/scim/v2/GroupsCreate a group
API keys can call this. Accepts an Idempotency-Key.
GET
/scim/v2/Groups/{uid}Get a SCIM group
API keys can call this.
PUT
/scim/v2/Groups/{uid}Replace a SCIM group
API keys can call this. Accepts an Idempotency-Key.
PATCH
/scim/v2/Groups/{uid}Patch a SCIM group
API keys can call this. Accepts an Idempotency-Key.
DELETE
/scim/v2/Groups/{uid}Delete the group (members keep their memberships)
API keys can call this. Accepts an Idempotency-Key.
GET
/scim/v2/ResourceTypesResource types
API keys can call this.
GET
/scim/v2/SchemasList the SCIM schemas
API keys can call this.
GET
/scim/v2/ServiceProviderConfigCapabilities
API keys can call this.
GET
/scim/v2/UsersList provisioned users
API keys can call this.
POST
/scim/v2/UsersProvision a user
API keys can call this. Accepts an Idempotency-Key.
GET
/scim/v2/Users/{uid}Get a SCIM user
API keys can call this.
PUT
/scim/v2/Users/{uid}Replace a SCIM user
API keys can call this. Accepts an Idempotency-Key.
PATCH
/scim/v2/Users/{uid}Patch a SCIM user
API keys can call this. Accepts an Idempotency-Key.
DELETE
/scim/v2/Users/{uid}Deprovision (deactivate, never delete data)
API keys can call this. Accepts an Idempotency-Key.
MCP for AI assistants (5)
GET
/mcp/No server-initiated stream: `405` as the transport allows
API keys can call this.
POST
/mcp/Handle one JSON-RPC message
API keys can call this.
DELETE
/mcp/No sessions to end: `405`
API keys can call this.
GET
/mcp/oauth-authorization-serverDescribe the OAuth authorization server
API keys can call this.
GET
/mcp/oauth-protected-resourceDescribe the resource, its token issuer origin and the scopes it understands
API keys can call this.
Analytics (1)
GET
/analytics/funnel/Return events, organizations and people per step, in funnel order
API keys can call this.
Assistant (2)
POST
/assistant/ask/Ask the assistant about this organization's EPR data
API keys can call this. Accepts an Idempotency-Key.
GET
/assistant/status/Report whether the assistant is available
API keys can call this.
Events (1)
POST
/events/Validate and store up to `MAX_BATCH` events; per-event problems are reported, not fatal
API keys can call this. Accepts an Idempotency-Key.
Fees (3)
GET
/fees/sources/List the fee and threshold source table
API keys can call this.
POST
/fees/sources/watches/Ask to be emailed when an awaited schedule or layout is published
API keys can call this. Accepts an Idempotency-Key.
DELETE
/fees/sources/watches/{uid}/Stop watching an awaited schedule or layout
API keys can call this. Accepts an Idempotency-Key.
Home (2)
GET
/home/summary/Return all sections, the onboarding checklist and the next-actions list
API keys can call this.
GET
/home/summary/{section}/Return one section; unknown sections are 404
API keys can call this.
Labelling (9)
GET
/labelling/certificates/Return one cursor page of stored certificates, newest first
API keys can call this.
POST
/labelling/certificates/Store a certificate for a component of the caller's organization
API keys can call this. Accepts an Idempotency-Key.
GET
/labelling/certificates/{uid}/Return one stored certificate
API keys can call this.
PATCH
/labelling/certificates/{uid}/Update the fields given; the component cannot change
API keys can call this. Accepts an Idempotency-Key.
DELETE
/labelling/certificates/{uid}/Delete a stored certificate and its file
API keys can call this. Accepts an Idempotency-Key.
GET
/labelling/components/{id}/Evaluate one component in the requested markets
API keys can call this.
GET
/labelling/conflicts/Return one page of conflicts across the caller's visible components
API keys can call this.
GET
/labelling/markets/List the markets the labelling rules cover
API keys can call this.
GET
/labelling/skus/{id}/Evaluate every component of one SKU in the requested markets
API keys can call this.
Obligations (7)
POST
/obligations/checker-answers/Save the checker answers where nothing is saved yet, then queue a check
API keys can call this. Accepts an Idempotency-Key.
GET
/obligations/declarations/Return declarations and revenue for the entities the caller may see
API keys can call this.
PUT
/obligations/declarations/Upsert declarations and revenue; an entity outside the caller's scope or org is a 404
API keys can call this. Accepts an Idempotency-Key.
GET
/obligations/determinations/Return the latest run's producer determinations
API keys can call this.
POST
/obligations/evaluate/Create a queued run and enqueue it; never evaluates on the request thread
API keys can call this. Accepts an Idempotency-Key.
GET
/obligations/results/Return the latest succeeded run with a page of its result rows
API keys can call this.
GET
/obligations/runs/{run_id}/Return the run; another organisation's run is a 404
API keys can call this.
Onboarding (12)
PATCH
/brands/{id}/Edit a brand; a brand in an inactive or out-of-scope entity is refused
API keys can call this. Accepts an Idempotency-Key.
GET
/entities/List the caller's legal entities and brands; a scope-restricted member sees only their own
API keys can call this.
PATCH
/entities/{id}/Edit a legal entity; reactivating one re-checks the plan's entity cap
API keys can call this. Accepts an Idempotency-Key.
GET
/onboarding/Return the checklist; a user with no organisation yet gets every step open
API keys can call this.
POST
/onboarding/brands/Create a brand; an entity in another organisation or outside the caller's scope is 404
API keys can call this. Accepts an Idempotency-Key.
GET
/onboarding/dismissal/Return ``{"dismissed": bool, "dismissed_at": ISO-8601 string or null}``
API keys can call this.
PUT
/onboarding/dismissal/Set the dismissal from ``{"dismissed": bool}`` and return the new state
API keys can call this. Accepts an Idempotency-Key.
POST
/onboarding/entities/Fill the untouched default entity or create a new one, then add the brand when given
API keys can call this. Accepts an Idempotency-Key.
GET
/preferences/ai-assist/Return the caller's AI assist override, the organisation default and the effective value
Only a signed-in person can call this.
PATCH
/preferences/ai-assist/Set the caller's override from ``{"override": true | false | null}``
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/preferences/shortcuts/Return whether the caller's single-key keyboard shortcuts are on
Only a signed-in person can call this.
PATCH
/preferences/shortcuts/Turn the caller's single-key shortcuts on or off from ``{"character_key_shortcuts": bool}``
Only a signed-in person can call this. Accepts an Idempotency-Key.
Reports (22)
GET
/reports/periods/Return periods for the entities the caller may see, filterable by status and jurisdiction
API keys can call this.
POST
/reports/periods/Open a period; an entity outside the caller's organisation or scope is a 404
API keys can call this. Accepts an Idempotency-Key.
GET
/reports/periods/{period_id}/Return the period; another organisation's period is a 404
API keys can call this.
POST
/reports/periods/{period_id}/amend/Create the amended version; an identical result is refused as `no_changes`
API keys can call this. Accepts an Idempotency-Key.
GET
/reports/periods/{period_id}/approvals/List approval requests for the period's figures
API keys can call this.
POST
/reports/periods/{period_id}/approvals/Ask a second person to approve the figures the period would seal now
API keys can call this. Accepts an Idempotency-Key.
POST
/reports/periods/{period_id}/approvals/{uid}/approve/Approve the period's figures as the second person
API keys can call this. Accepts an Idempotency-Key.
POST
/reports/periods/{period_id}/approvals/{uid}/reject/Send the period's figures back with a note
API keys can call this. Accepts an Idempotency-Key.
POST
/reports/periods/{period_id}/checks/Store a fresh set of findings and return them
API keys can call this. Accepts an Idempotency-Key.
GET
/reports/periods/{period_id}/findings/Return the newest run per format, each with its findings
API keys can call this.
POST
/reports/periods/{period_id}/findings/{finding_id}/acknowledge/Acknowledge a warning or note with a note; blocking findings and locked periods are refused
API keys can call this. Accepts an Idempotency-Key.
GET
/reports/periods/{period_id}/inputs/Return the recorded header values
API keys can call this.
PUT
/reports/periods/{period_id}/inputs/Set or clear header values; a locked period answers 409 `record_locked`
API keys can call this. Accepts an Idempotency-Key.
POST
/reports/periods/{period_id}/lock/Seal one version per format and return them
API keys can call this. Accepts an Idempotency-Key.
GET
/reports/periods/{period_id}/methodology/Return the document as JSON (default), HTML or PDF
API keys can call this.
GET
/reports/second-approval/Return whether a second approval is required
Only a signed-in person can call this.
PUT
/reports/second-approval/Turn the second-approval requirement on or off
Only a signed-in person can call this. Accepts an Idempotency-Key.
GET
/reports/versions/{version_id}/Return the version; another organisation's version is a 404
API keys can call this.
POST
/reports/versions/{version_id}/attest/Record name, title, signature and time; needs the signing right (403 `signer_not_authorised`) and a paid plan (402)
API keys can call this. Accepts an Idempotency-Key.
GET
/reports/versions/{version_id}/diff/Return the stored diff, or 404 when this is the first version
API keys can call this.
GET
/reports/versions/{version_id}/file/Stream the prepared file and audit the export
API keys can call this.
GET
/reports/versions/{version_id}/methodology/Return the note as Markdown (default), HTML or PDF; PDF is 409 when it could not be rendered
API keys can call this.
Small business (12)
GET
/small-business/calendar-feed/Read the calendar feed state
API keys can call this.
POST
/small-business/calendar-feed/Make a new calendar link (the old one stops working)
API keys can call this. Accepts an Idempotency-Key.
DELETE
/small-business/calendar-feed/Turn the calendar link off
API keys can call this. Accepts an Idempotency-Key.
GET
/small-business/exemptions/List tracked exemption applications
API keys can call this.
PATCH
/small-business/exemptions/{uid}/Update a tracked exemption (status, deadline, filed date, reference, notes)
API keys can call this. Accepts an Idempotency-Key.
DELETE
/small-business/exemptions/{uid}/Stop tracking an exemption
API keys can call this. Accepts an Idempotency-Key.
GET
/small-business/free-plan/Read what the free plan includes
API keys can call this.
GET
/small-business/owner-summary/Read the printable owner summary
API keys can call this.
GET
/small-business/packaging-templates/List packaging templates
API keys can call this.
POST
/small-business/packaging-templates/apply/Add a packaging template's components to a product
API keys can call this. Accepts an Idempotency-Key.
GET
/small-business/threshold-check/Read the check's choices and the latest saved check
API keys can call this.
POST
/small-business/threshold-check/Run and save the threshold check
API keys can call this. Accepts an Idempotency-Key.
Support (5)
POST
/support/inbound/Verify the signature, store the event once, and thread the mail onto a ticket
API keys can call this. Accepts an Idempotency-Key.
GET
/support/staff/tickets/List tickets (`status`, `assignee` = me|unassigned|<id>, `organization`, `q`)
API keys can call this.
GET
/support/staff/tickets/{uid}/Return a ticket with every message including internal notes
API keys can call this.
PATCH
/support/staff/tickets/{uid}/Change ``status`` and/or ``assignee`` (``"me"``, a staff user id, or null to unassign)
API keys can call this. Accepts an Idempotency-Key.
POST
/support/staff/tickets/{uid}/reply/Email a reply to the requester, or save an internal note when `note` is true
API keys can call this. Accepts an Idempotency-Key.
Targets (10)
POST
/targets/evaluate/Evaluate and store the result; pending rules are named in `pending_leaves`
API keys can call this. Accepts an Idempotency-Key.
GET
/targets/evaluations/Return up to 100 saved evaluations without their result bodies
API keys can call this.
GET
/targets/evaluations/{id}/Return the run; another organisation's (or another scoped user's) run is a 404
API keys can call this.
POST
/targets/labelling/Evaluate labelling for the selected specs in the requested markets and save the run
API keys can call this. Accepts an Idempotency-Key.
GET
/targets/options/Return the caller's visible specs (with components) and the material catalogue
API keys can call this.
POST
/targets/simulate/Return deltas in fees, targets, PPWR grade and UK PPT for the proposed changes
API keys can call this. Accepts an Idempotency-Key.
GET
/targets/tracking/Return tracked targets; restricted members see only their scoped entities' targets
API keys can call this.
POST
/targets/tracking/Create a tracked target in the caller's organisation
API keys can call this. Accepts an Idempotency-Key.
PATCH
/targets/tracking/{id}/Update figures; another organisation's target is a 404
API keys can call this. Accepts an Idempotency-Key.
DELETE
/targets/tracking/{id}/Delete a tracked target
API keys can call this. Accepts an Idempotency-Key.