Quick start
Set the base URL once, then run any example below.
ATLAS_API=https://www.elabel-atlas.eu/api/v1
Authentication
Anonymous requests can use every public read endpoint. A key raises the rate limit and is required for provider write operations. Provider workspace owners and administrators can create a key in the signed-in workspace under API keys. If you need a read key without a provider workspace or need bulk access, email david@essentialcode.eu.
curl --fail --silent --show-error \
-H "Authorization: Bearer $ATLAS_API_KEY" \
"$ATLAS_API/public-records?limit=1"
Rate limits
Each public operation allows 60 anonymous requests per minute per address, or 600 per minute per read key. Responses include limit, remaining, and reset headers. A request over the limit returns HTTP 429:
HTTP/1.1 429 Too Many Requests
retry-after: 60
x-ratelimit-limit: 60
x-ratelimit-remaining: 0
{"error":{"code":"rate_limited","message":"The public API rate limit was exceeded."}}
Public read endpoints
Search records
curl --fail --silent --show-error \
"$ATLAS_API/search?q=Veltliner&limit=1"
Sample output
{
"query": "Veltliner",
"records": [{
"atlas_record_id": "QXSvIVqvHcRW-LjHtG88I",
"name": "Grüner Veltliner 2025",
"provider": { "name": "Demo Wine Cooperative" },
"gtin": "4006381333931"
}]
}
List public records
curl --fail --silent --show-error \
"$ATLAS_API/public-records?limit=1"
Sample output
{
"records": [{
"atlas_record_id": "ovPcoHyHMEbzdcGC_Zkm_",
"name": "Grüner Veltliner Ried Steinberg 2024",
"provider": { "name": "Glasswise" }
}],
"next_cursor": "eyJ1cGRhdGVkQXQiOjE3ODk1MDIxMjQ3MDcsImlkIjoib3ZQY29IeUhNRWJ6ZGNHQ19aa21fIn0"
}
Look up a GTIN
curl --fail --silent --show-error \
"$ATLAS_API/public-records/4006381333931"
Sample output
{
"gtin": "4006381333931",
"records": [{
"atlas_record_id": "QXSvIVqvHcRW-LjHtG88I",
"name": "Grüner Veltliner 2025",
"provider": { "name": "Demo Wine Cooperative" }
}]
}
Get one record by Atlas ID
RECORD_ID=$(curl --fail --silent --show-error \
"$ATLAS_API/public-records?limit=1" | jq -r '.records[0].atlas_record_id')
curl --fail --silent --show-error \
"$ATLAS_API/public-records/by-id/$RECORD_ID"
Sample output
{
"atlas_record_id": "ovPcoHyHMEbzdcGC_Zkm_",
"name": "Grüner Veltliner Ried Steinberg 2024",
"provider": { "name": "Glasswise" },
"atlas_updated_at": "2026-09-15T19:55:24.707Z"
}
MCP
Model Context Protocol, or MCP, is a standard way for an AI client to call external tools. Atlas provides an anonymous Streamable HTTP server at https://www.elabel-atlas.eu/mcp.
Add it to Claude Code:
claude mcp add --transport http --scope project e-label-atlas https://www.elabel-atlas.eu/mcp
For another MCP client, use this server entry:
{
"mcpServers": {
"e-label-atlas": {
"type": "http",
"url": "https://www.elabel-atlas.eu/mcp"
}
}
}
The server exposes search_elabels, lookup_elabel_by_gtin, get_elabel, and list_elabels_updated_since.