EUlabel
API Reference

Passports

Attach and retrieve Digital Product Passports.

Attach and retrieve Digital Product Passports.

Create a passport

POST
/passports

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/passports" \  -H "Content-Type: application/json" \  -d '{    "productId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",    "data": {      "productType": "wine",      "ingredients": [        "Grapes",        "Sulphur Dioxide"      ],      "nutrition": {        "energyKj": 300,        "energyKcal": 72,        "fatG": 0,        "saturatedFatG": 0,        "carbohydratesG": 0.5,        "sugarsG": 0.2,        "proteinG": 0.1,        "saltG": 0,        "alcoholG": 12      },      "allergens": {        "containsSulphites": true,        "containsEgg": false,        "containsFish": false,        "containsMilk": false      },      "origin": {        "country": "PT",        "region": "Douro"      },      "producers": [        {          "name": "Quinta do Crasto",          "role": "producer",          "country": "PT"        }      ]    }  }'
{
  "passportId": "e5f6g7h8-i9j0-1234-klmn-opqrstuvwxyz",
  "productId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "version": 1,
  "status": "published",
  "createdAt": "2026-03-14T20:00:00.000Z"
}
{
  "error": {
    "type": "authentication_error",
    "message": "Invalid API key",
    "code": "authentication_error"
  }
}
{
  "error": {
    "type": "not_found",
    "message": "No product found for this GTIN",
    "code": "not_found"
  }
}
{
  "error": {
    "type": "validation_error",
    "message": "gtin is required",
    "code": "validation_error",
    "param": "gtin"
  }
}

Get a product's passport

GET
/products/{productId}/passport

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/passport"
{
  "productId": "dcd53ddb-8104-4e48-8cc0-5df1088c6113",
  "passportId": "cc3d87d5-4fa3-490e-b981-91f55888c0b7",
  "name": "string",
  "category": "string",
  "gtin": "string",
  "data": {
    "productType": "wine",
    "colour": "red",
    "vintage": 0,
    "ingredients": [
      "string"
    ],
    "nutrition": {
      "energyKj": 0,
      "energyKcal": 0,
      "fatG": 0,
      "saturatedFatG": 0,
      "carbohydratesG": 0,
      "sugarsG": 0,
      "proteinG": 0,
      "saltG": 0,
      "alcoholG": 0
    },
    "allergens": {
      "containsSulphites": true,
      "containsEgg": true,
      "containsFish": true,
      "containsMilk": true
    },
    "origin": {
      "country": "string",
      "region": "string",
      "designation": "string"
    },
    "producers": [
      {
        "name": "string",
        "role": "producer",
        "country": "string"
      }
    ]
  },
  "qrCodeUrl": "http://example.com",
  "status": "published",
  "version": 0,
  "lastUpdated": "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"
  }
}