EUlabel
API Reference

Products

Create, update, list, and retrieve products.

Create, update, list, and retrieve products.

List products

GET
/products

Authorization

bearerAuth
AuthorizationBearer <token>

API key authentication. Pass your key in the Authorization header: Authorization: Bearer sk_live_...

In: header

Query Parameters

limit?integer

Maximum number of products to return.

Default25
Rangevalue <= 100
starting_after?string

Cursor for pagination. Pass the productId of the last item from the previous page.

Response Body

application/json

application/json

curl -X GET "https://api.eulabel.eu/v1/products"
{
  "data": [
    {
      "internalId": "6868d0ce-34a2-4e78-b137-31229ba3e81a",
      "tenantId": "string",
      "gtin": "string",
      "name": "string",
      "category": "wine",
      "brand": "string",
      "sku": "string",
      "links": [
        {
          "href": "http://example.com",
          "rel": "string",
          "type": "string"
        }
      ],
      "createdAt": "2019-08-24T14:15:22Z",
      "updatedAt": "2019-08-24T14:15:22Z"
    }
  ],
  "hasMore": true
}
{
  "error": {
    "type": "authentication_error",
    "message": "Invalid API key",
    "code": "authentication_error"
  }
}

Create a product

POST
/products

Authorization

bearerAuth
AuthorizationBearer <token>

API key authentication. Pass your key in the Authorization header: Authorization: Bearer sk_live_...

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://api.eulabel.eu/v1/products" \  -H "Content-Type: application/json" \  -d '{    "name": "Quinta do Crasto Douro Red 2021",    "category": "wine",    "brand": "Quinta do Crasto",    "gtin": "5601234567890"  }'
{
  "productId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "qrCodeUrl": "https://eulabel.eu/01/05601234567890",
  "createdAt": "2026-03-14T20:00:00.000Z"
}
{
  "error": {
    "type": "authentication_error",
    "message": "Invalid API key",
    "code": "authentication_error"
  }
}
{
  "error": {
    "type": "duplicate_error",
    "message": "A product with this GTIN already exists",
    "code": "duplicate_error",
    "param": "gtin"
  }
}
{
  "error": {
    "type": "validation_error",
    "message": "gtin is required",
    "code": "validation_error",
    "param": "gtin"
  }
}

Get a product

GET
/products/{productId}

Authorization

bearerAuth
AuthorizationBearer <token>

API key authentication. Pass your key in the Authorization header: Authorization: Bearer sk_live_...

In: header

Path Parameters

productId*string

Unique product identifier.

Formatuuid

Response Body

application/json

application/json

application/json

curl -X GET "https://api.eulabel.eu/v1/products/497f6eca-6276-4993-bfeb-53cbbbba6f08"
{
  "internalId": "6868d0ce-34a2-4e78-b137-31229ba3e81a",
  "tenantId": "string",
  "gtin": "string",
  "name": "string",
  "category": "wine",
  "brand": "string",
  "sku": "string",
  "links": [
    {
      "href": "http://example.com",
      "rel": "string",
      "type": "string"
    }
  ],
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z"
}
{
  "error": {
    "type": "authentication_error",
    "message": "Invalid API key",
    "code": "authentication_error"
  }
}
{
  "error": {
    "type": "not_found",
    "message": "Resource not found",
    "code": "not_found"
  }
}

Update a product

PATCH
/products/{productId}

Authorization

bearerAuth
AuthorizationBearer <token>

API key authentication. Pass your key in the Authorization header: Authorization: Bearer sk_live_...

In: header

Path Parameters

productId*string

Unique product identifier.

Formatuuid

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X PATCH "https://api.eulabel.eu/v1/products/497f6eca-6276-4993-bfeb-53cbbbba6f08" \  -H "Content-Type: application/json" \  -d '{    "name": "Quinta do Crasto Douro Red 2022",    "brand": "Quinta do Crasto"  }'
{
  "product": {
    "internalId": "6868d0ce-34a2-4e78-b137-31229ba3e81a",
    "tenantId": "string",
    "gtin": "string",
    "name": "string",
    "category": "wine",
    "brand": "string",
    "sku": "string",
    "links": [
      {
        "href": "http://example.com",
        "rel": "string",
        "type": "string"
      }
    ],
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z"
  }
}
{
  "error": {
    "type": "authentication_error",
    "message": "Invalid API key",
    "code": "authentication_error"
  }
}
{
  "error": {
    "type": "not_found",
    "message": "Resource not found",
    "code": "not_found"
  }
}
{
  "error": {
    "type": "validation_error",
    "message": "gtin is required",
    "code": "validation_error",
    "param": "gtin"
  }
}