# EPR in your product. Real representation behind it.

Check obligations, quote from our live prices and send clients to a tracked checkout. It's free, with no key and no sales call.

The API checks, quotes, prepares a checkout link and simulates the onboarding. It doesn't sign, pay or register: a person signs and pays, and our team registers and files.

## What you can build

It runs in production, free. You build the flow and our team does the registrations and filing behind it.

| Capability | Endpoint | Access |
|---|---|---|
| Check which countries and streams apply | `POST /check` | Open |
| Read the France questionnaire | `GET /france/questionnaire` | Open |
| Quote from live prices | `POST /quote` | Open |
| Create a checkout link tied to your partner | `POST /onboarding-links` | Partner code |
| Test each country's steps from start to finish | `/sandbox/onboardings` | Open |
| Follow real clients and their fees | Partner dashboard | Partner |
| Sign and track under your own brand | Set up with you | White label |

## Reference

JSON over HTTPS, base URL https://epreurep.com/api/v1. No key. Limit: 30 requests a minute per IP. Prices exclude VAT, and scheme fees are billed separately at cost.

OpenAPI file: https://epreurep.com/developers/openapi.json

### POST /api/v1/check

Which of your countries we cover, and a first guess at the product streams. The streams can go straight into `/quote`.

```bash
curl -X POST https://epreurep.com/api/v1/check \
  -H 'content-type: application/json' \
  -d '{"countries":["FR","DE"],"products":["cotton t-shirt"]}'
```

### GET /api/v1/france/questionnaire

The questions our French checkout asks, with every stream, the lowest plan for each and the plan rules. Build your form from it.

```bash
curl https://epreurep.com/api/v1/france/questionnaire
```

### POST /api/v1/quote

The yearly price, calculated by the same code as our checkout. France needs the three answers from the questionnaire and returns the plan they lead to. Germany needs this year's kilos and returns the licence estimate. `custom_quote` is true for Enterprise, which we quote first.

```bash
curl -X POST https://epreurep.com/api/v1/quote \
  -H 'content-type: application/json' \
  -d '{"france":{"sells_to":"consumers","streams":["toys"],"tonnes":"up_to_1"},"germany":{"packaging_kg":{"paper":120,"plastic":40}},"spain":{"plan":"essential","nif":true}}'
```

### POST /api/v1/onboarding-links

A checkout link tied to your partner code, with the answers already in it and company and email filled in. Company and email stay in the URL fragment. Takes the same body as `/quote`. For Enterprise, the link opens the quote request and cannot be paid. `northstar` is a demo code for testing: use your own once you are a partner.

```bash
curl -X POST https://epreurep.com/api/v1/onboarding-links \
  -H 'content-type: application/json' \
  -d '{"partner":"northstar","germany":{"packaging_kg":{"paper":120,"plastic":40}},"company":"Example Ltd","email":"owner@example.com"}'
```

### POST /api/v1/sandbox/onboardings

Starts a simulated onboarding for FR, DE or ES and returns an id. One step moves on every 5 seconds.

```bash
curl -X POST https://epreurep.com/api/v1/sandbox/onboardings \
  -H 'content-type: application/json' \
  -d '{"countries":["DE"]}'
```

### GET /api/v1/sandbox/onboardings/{id}

The simulated status per country. `client_action_required` marks the steps a client has to do personally.

```bash
curl https://epreurep.com/api/v1/sandbox/onboardings/sbx_...
```

## What no API can do

- A client appoints the representative directly. The mandate names the real legal entity in each country.
- Germany: the client registers in LUCID personally, and the mandate needs a handwritten or qualified electronic signature. The dual-system licence is paid in the portal, before we accept the appointment.
- Spain: the appointment can need a power of attorney that the authorities verify.
- Registrations and declarations are done by our team, so they run in days, not seconds.
