Developer reference · Beta

ELID API

Wine identities, text matching, LWIN lookup and vintage facts.

Quick start

Base path: /api/v1. Authenticate with a bearer token.

curl 'https://elid.wine/api/v1/wines?limit=1' \
  -H "Authorization: Bearer $ELID_API_TOKEN"

Endpoints

POST /api/v1/match

Match wine text against this site’s snapshot.

curl 'https://elid.wine/api/v1/match' \
  -H "Authorization: Bearer $ELID_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"raw":"Kanonkop Paul Sauer 2021","top_n":3}'
JSON fieldMeaning
rawRequired wine text, up to 500 characters.
top_n1–20 candidates. Default: 5.
country_codeOptional two-letter country code, e.g. ZA.
producer_idOptional ELID producer code, e.g. ZA-KNKP.

Returns ranked data with elid, lwin, display_name, producer_name, wine, score, producer_score and name_score. Scores rank candidates; they are not probabilities. No accepted match returns [].

snapshot identifies the data version; matcher_version identifies the scorer. Matching returns base wine identities. Retrieve vintage facts with the wine endpoint below.

GET /api/v1/wines

Active wine identities, ordered by ELID.

ParameterMeaning
limit1–200 results. Default: 50.
afterPrevious next_cursor. Keep other filters unchanged.
qSubstring search in name or ELID; case-insensitive, up to 200 characters. For free text, use matching.
lwinExact seven-digit LWIN. No known match returns an empty list.

Response structure · selected fields

{
  "data": [
    {
      "elid": "AR-MDZ-CTZP01",
      "display_name": "Nicolás Catena Zapata",
      "lwin": null
    }
  ],
  "next_cursor": "AR-MDZ-CTZP01"
}

next_cursor: null marks the last page.

GET /api/v1/wines/{elid}

One wine’s catalog fields and available vintage facts. Use the base ELID without a vintage suffix.

curl 'https://elid.wine/api/v1/wines/AR-MDZ-CTZP01' \
  -H "Authorization: Bearer $ELID_API_TOKEN"

The data object includes a facts array, ordered by vintage descending. No facts: []. Vintage is a year string or NVXX.

LWIN lookup

Query /api/v1/wines?lwin=1831339 to find its ELID. Wine records also include lwin as a string, or null when unknown. Only seven-digit wine-level LWINs are supported.

Fields

Catalog entries are available with or without facts. Pricing, restaurant wine lists and critic reviews are excluded.

Catalog fields16 fields
FieldTypeUnit
elidstring
display_namestring · nullable
producer_namestring · nullable
winestring · nullable
countrystring · nullable
regionstring · nullable
sub_regionstring · nullable
sitestring · nullable
parcelstring · nullable
colourstring · nullable
typestring · nullable
sub_typestring · nullable
designationstring · nullable
classificationstring · nullable
lwinstring · nullable
variety_codestring · nullable

Fact-sheet fields

Unknown fields are omitted. Descriptive values are strings; some contain JSON-formatted text.

Composition10 fields
FieldTypeUnit
alcohol_percentnumber% ABV
residual_sugar_glnumberg/L
total_acidity_glnumberg/L
phnumber
sulfites_ppmnumberppm
tartaric_acid_glnumberg/L
malic_acid_glnumberg/L
brix_at_harvestnumber°Brix
calories_per_100mlnumberkcal / 100 mL
variety_blendstring
Vineyard & harvest11 fields
FieldTypeUnit
grape_clonestring
soilstring
elevation_metersnumbermetres
slope_degreesnumberdegrees
orientationstring
estate_grownboolean
vine_agestring
grapes_picked_datestring
harvest_datesstring
yield_hectoliters_per_hectarenumberhL/ha
site_blendstring
Winemaking14 fields
FieldTypeUnit
has_sulfitesboolean
has_natural_yeastboolean
has_indigenous_yeastboolean
has_extended_macerationboolean
has_malolactic_fermentationboolean
malolactic_percentnumber%
has_carbonic_macerationboolean
has_botrytisboolean
pressing_methodstring
fermentation_vesselsstring
production_detailsstring
fining_agentsstring
unfinedboolean
unfilteredboolean
Aging & oak13 fields
FieldTypeUnit
aging_daysnumberdays
oak_aging_daysnumberdays
bottle_aging_daysnumberdays
lees_aging_daysnumberdays
maceration_daysnumberdays
has_lees_agingboolean
first_fill_new_oaknumber%
second_fill_oaknumber%
third_fill_oaknumber%
has_used_oak_onlyboolean
oak_kindsstring
barrel_sizestring
oak_toast_levelstring
Sparkling wine5 fields
FieldTypeUnit
dosagenumberg/L
disgorgement_datestring
tirage_datestring
riddling_daysnumberdays
base_wine_yearsstring
Bottling & certification6 fields
FieldTypeUnit
closure_typestring
bottling_datestring
certification_bodiesstring
classificationsstring
veganboolean
vegetarianboolean
Serving & tasting5 fields
FieldTypeUnit
drinking_windowstring
serving_temp_cstring°C
serving_temp_fstring°F
tasting_notes_descriptorsstring
food_pairingstring

Errors

StatusMeaning
400Invalid, repeated or unknown parameter.
401Missing, invalid or revoked token.
404Wine or endpoint not found.
405Wrong method for the endpoint.
413Request body exceeds 8 KiB.
415Use Content-Type: application/json.
503Temporarily unavailable; retry with backoff.
{
  "error": "A valid bearer token is required."
}