Toegang en sleutels
Elke winkel krijgt een eigen sleutel in de vorm ma- plus 32 tekens. Stuur hem mee in de header X-Worker-Key (of Authorization: Bearer). Een sleutel werkt alleen voor de shopdomeinen die erbij horen; stuur het domein mee in X-Shop-Domain.
POST /lookup HTTP/1.1
Host: api.data-enricher.com
X-Worker-Key: ma-…
X-Shop-Domain: jouwwinkel.nl
Content-Type: application/json
Elke sleutel heeft een limiet per maand voor verzoeken. Antwoorden uit de cache tellen niet mee. Vraag een sleutel aan via de contactpagina.
POST /lookup
Zoekt een product op aan de hand van de EAN en geeft de feiten en gecontroleerde foto's terug. EAN-8, UPC-A, EAN-13 en GTIN-14 worden gecontroleerd op het controlecijfer; UPC-A wordt EAN-13.
{"ean": "7333377653917", "name": "Husqvarna 550i XP", "refresh": false}
| Veld | Betekenis |
|---|---|
ean | Verplicht. De barcode van het product. |
name | Optioneel. De naam in je winkel; helpt bij EAN's die online onduidelijk zijn. Maximaal 128 tekens. |
refresh | Optioneel. true zoekt opnieuw in plaats van de cache te gebruiken. |
{"result": {
"ean": "7333377653917", "identified": true, "name": "Husqvarna 550i XP",
"description": "…", "specs": {"Accuspanning": "36 V"},
"images": {"in_use": ["https://…"], "product": ["https://…"]},
"sources": ["https://…"], "cached": false, "credits_used": 0, "search": "free"
}}
Er komen maximaal acht foto's terug, "in gebruik" eerst, met altijd plek voor minstens drie productfoto's als die er zijn. Een fout staat in result.error; er wordt dan niets opgeslagen, zodat je het later opnieuw kunt proberen.
POST /text
Schrijft de productteksten in een taal: titel, korte en lange omschrijving, meta-titel en meta-beschrijving.
{"ean": "7333377653917", "name": "Husqvarna 550i XP", "language": "nl", "format": "html"}
language is een ISO-code: nl, en, de, fr, es, it, pt, pl, da, sv, no, fi, cs, ro, zh, ja, ru of ko. Een andere code valt terug op Engels, met een warning. format is html of text.
Naast de kant-en-klare description krijg je de omschrijving in delen: intro_html en sections (kenmerken, waarom kiezen, voordelen, nadelen, wat zit er in de doos, veelgestelde vragen, over het merk), elk met een kop in de taal van de tekst. Zo bouw je je eigen omschrijving met de secties en volgorde die jij wilt. In details staat alles ook als data: specificaties, eigenschappen, keywords, kleuren, materialen en maten.
POST /page-text
Teksten voor een categorie- of merkpagina: een korte omschrijving voor bovenaan, een lange omschrijving in secties, een meta-titel en een meta-beschrijving, met interne links naar pagina's van je eigen winkel.
{"type": "category", "entity_id": 12, "name": "Kettingzagen", "language": "nl",
"path": "Tuin > Kettingzagen", "subcategories": ["Accukettingzagen"],
"brands": ["Husqvarna"], "products": ["Husqvarna 550i XP"],
"links": [{"type": "subcategory", "title": "Accukettingzagen", "url": "https://jouwwinkel.nl/accukettingzagen"}],
"shop_name": "Jouw Winkel"}
Links komen alleen naar de url's die je meestuurt, elke url hoogstens één keer en maximaal zes per tekst. Voor een merk ("type": "brand") stuur je categories in plaats van subcategories en brands; de API zoekt dan ook online naar het merk.
POST /jobs
Tot twintig EAN's in één keer, waarvan er vijf tegelijk worden opgezocht. Je krijgt meteen een job_id terug.
{"items": [{"ean": "7333377653917", "name": "Husqvarna 550i XP"}, {"ean": "8716637053167"}]}
Volg de voortgang met GET /jobs/{job_id}: status is queued, running of done, en results houdt de volgorde van je verzoek aan.
GET /usage
Je verbruik en limieten in de huidige periode: verzoeken, credits en AI-tokens.
Foutmeldingen
| Status | Betekenis |
|---|---|
| 400 | Geen geldige JSON. |
| 403 | Verkeerde sleutel, of het shopdomein hoort niet bij de sleutel. |
| 413 | Het verzoek is te groot. |
| 422 | Geen geldige EAN's in een batch. |
| 429 | Te veel verzoeken, of de limiet van je pakket is bereikt. |
Inhoudelijke fouten, zoals een product dat niet te vinden is, komen terug met status 200 en een error in het resultaat.