API-documentatie

Koppel Data Enricher aan je eigen platform, PIM of importscript. Eén REST-API, JSON in en JSON uit.

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}
VeldBetekenis
eanVerplicht. De barcode van het product.
nameOptioneel. De naam in je winkel; helpt bij EAN's die online onduidelijk zijn. Maximaal 128 tekens.
refreshOptioneel. 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

StatusBetekenis
400Geen geldige JSON.
403Verkeerde sleutel, of het shopdomein hoort niet bij de sleutel.
413Het verzoek is te groot.
422Geen geldige EAN's in een batch.
429Te 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.

Vragen over de API

Hoe kom ik aan een API-sleutel?

Vraag een sleutel aan via de contactpagina. Elke winkel krijgt een eigen sleutel, die alleen werkt voor de shopdomeinen die erbij horen.

Tellen herhaalde verzoeken mee voor mijn limiet?

Nee. Antwoorden uit de cache tellen niet mee.

Hoeveel EAN's kan ik tegelijk versturen?

Tot twintig in één batch via /jobs. Daarvan worden er vijf tegelijk opgezocht.

Wat als een product niet te vinden is?

Dan krijg je status 200 met een error in het resultaat. Er wordt niets opgeslagen, zodat je het later opnieuw kunt proberen.