Fetch the complete documentation index at: https://eulabel.eu/docs/llms.txt Use this file to discover all available pages before exploring further. Full content: https://eulabel.eu/docs/llms-full.txt Append .md to any page URL for markdown, or send Accept: text/markdown.
EUlabel API

Introduction

Complete reference for all EUlabel REST API endpoints.

The EUlabel API provides endpoints for managing products, digital passports, suppliers, and scan analytics. All endpoints follow a consistent design: simple, predictable, and well-documented.

Base URL

https://api.eulabel.eu/v1

Authentication

All requests require an API key in the Authorization header:

curl https://api.eulabel.eu/v1/products \
  -H "Authorization: Bearer sk_test_..."

See Authentication for details on API keys and scopes.

Request format

  • Request bodies use JSON (Content-Type: application/json)
  • All timestamps are ISO 8601 in UTC
  • Identifiers are UUIDs

Pagination

List endpoints return paginated results:

{
  "data": [...],
  "pagination": {
    "total": 142,
    "page": 1,
    "perPage": 20,
    "totalPages": 8
  }
}
ParameterTypeDefaultDescription
pageinteger1Page number (1-based)
perPageinteger20Items per page (max 100)
curl "https://api.eulabel.eu/v1/products?page=2&perPage=50" \
  -H "Authorization: Bearer sk_test_..."

Rate limiting

Exceeding the rate limit returns a 429 status code. Always respect the Retry-After header before retrying.

Requests are rate-limited per API key. Current limits are returned in response headers:

HeaderDescription
X-RateLimit-LimitMaximum requests per window
X-RateLimit-RemainingRemaining requests in current window
X-RateLimit-ResetUnix timestamp when the window resets
Retry-AfterSeconds to wait (only on 429 responses)

See the Error Handling guide for retry strategies.

Versioning

The API is versioned via URL path (/v1/). Breaking changes result in a new version. Non-breaking additions (new fields, new endpoints) are added to the current version without notice.

Error format

All errors return a consistent structure:

{
  "error": "validation_error",
  "message": "gtin is required",
  "suggestion": "Provide a valid 8, 12, 13, or 14-digit GTIN.",
  "status": 422
}

Status codes

CodeMeaning
200Success
201Resource created
400Malformed request (invalid JSON)
401Missing or invalid authentication
403Insufficient permissions
404Resource not found
422Validation error (check the message field)
429Rate limit exceeded
500Internal server error

Endpoints

On this page