Repère

Prove your suppliers are
REP-registered. On a date.

Repère checks a French company against the official ADEME register of REP producers and returns evidence — what the register said, on which date, for which stream. Never a verdict you cannot defend.

Start free — 100 calls See pricing

One call, dated evidence

# Ask about a SIRET
curl -X POST https://api.repere.tech/v1/verify \
  -H "X-API-Key: *** \
  -d '{"siret": "50056940503239"}'

# Get back what the register said, and when
{
  "query":    { "siret": "50056940503239" },
  "observed_at": "2026-09-28T06:00:00Z",
  "source":   "ADEME / SYDEREP",
  "findings": [
    { "filiere": "EEE", "status": "found_active",
      "identifiant_unique": "FR...", "raison_sociale": "DECATHLON" },
    { "filiere": "PNEU", "status": "not_found" }
  ]
}

No compliant: true anywhere in that response — and there never will be. Compliance is a legal conclusion; we give you the facts it rests on.

Why it is hard to copy

A dated archive

ADEME publishes today's register and nothing else. Withdrawn registrations are deleted. We snapshot daily, so you can show what was true in March — which nobody can backfill later.

Withdrawal alerts

A supplier losing their IDU is exactly the event you need to know about. We diff every snapshot and tell you what changed.

Honest matching

Foreign producers have no SIRET. When a name match is ambiguous we return ranked candidates instead of guessing.

Built for the AGEC obligation

Article L. 541-10-13 du Code de l'environnement requires producers to hold a unique identifier (IDU) per REP stream. Buyers are exposed when a supplier's registration lapses quietly. Repère turns that into an API call and a dated record.

Monitoring and alerts

Register the suppliers you buy from once. Every morning we compare the new register against yesterday's and raise an event for anything that moved — so a registration that lapses quietly does not stay quiet.

1. Register your suppliers

POST /v1/watch with a SIRET or SIREN, optionally narrowed to the REP streams you care about. Free to create, and listing or cancelling a watch never costs a call.

2. We diff the register daily

ADEME refreshes around 05:30 UTC; we snapshot after that and diff only your watched suppliers. A withdrawal is matched against the separate withdrawn register, so the event carries the end date and the motive.

3. You read the events

GET /v1/events returns the changes on your suppliers, newest first, each stamped with the two snapshots it was detected between. One real change is one event, even if a job retries.

What raises an event

Pushed to you, or polled

Register a destination and every event is pushed to it: an HTTPS webhook signed with HMAC-SHA256 so you can prove it came from us, or a plain-text email. Polling GET /v1/events keeps working either way — push is an addition, never the only copy. GET /v1/destinations shows you whether delivery is actually succeeding, including the last error, so a silently broken endpoint is visible to you rather than only to us.

Suppliers you can monitor

Monitoring is included in every plan up to a ceiling: free 5, starter 100, growth 1 000, scale 10 000. GET /v1/watch always tells you how much headroom is left.

What it does not do

Detection is daily, not real-time — the source only changes daily, so a faster poll would just re-read yesterday's file. Delivery is best-effort with retries: we attempt a webhook five times over about six hours, then park it and keep the event readable on the API, so a missed push is never a lost event. And monitoring needs a SIRET or SIREN: we refuse name-only watches, because matching a name is a guess and a guess raises false alarms.

See the events API