Skip to content

Public passport reads

Public passport reads

Anyone can read a published passport with these three methods. They need no API key. They use the paths of EN 18222, the European standard for passport APIs.

Base address

Every method starts at https://passportcraft.com. A brand's own passport domain answers the same methods for that brand's passports.

Where a registry asks for a passport's API endpoint (dppApiEndpoint in EN 18222), give this base address.

https://passportcraft.com

Methods

  • GET/v1/dpps/{dppId}

    Read one passport by its id.

  • GET/v1/dppsByProductId/{productId}

    Read the passport of one product.

  • POST/v1/dppsByProductIds

    Find the passport ids of several products.

Request
curl "https://passportcraft.com/v1/dpps/https%3A%2F%2Fpassportcraft.com%2Fpassport%2F{id}"
Response
{
  "digitalProductPassportId": "https://passportcraft.com/passport/{id}",
  "uniqueProductIdentifier": "https://passportcraft.com/01/{gtin}",
  "granularity": "model",
  "dppSchemaVersion": "EN18223:v1.0",
  "dppStatus": "active",
  "lastUpdated": "2026-01-01T00:00:00Z"
}

Identifiers

dppId is the passport's digitalProductPassportId, percent-encoded. The passport's id alone also works.

productId is the passport's uniqueProductIdentifier, percent-encoded. That is its GS1 Digital Link, or its passport address when the product has no barcode.

Send up to 500 product identifiers as a JSON array in the request body. Send each identifier exactly as the passport gives it. Do not add the percent-encoding the two GET methods need. The answer lists the passport ids it found, in the order you sent them. A product identifier that matches no published passport is left out.

limit sets how many product identifiers one page reads, from 1 to 100. Without it, a page reads 50. While more remain, paging_metadata.cursor holds the value to send as cursor for the next page.

Representation

The passport comes in the compressed form by default. Add ?representation=full for the full form, which names the type of each element.

Browsers

A request that prefers HTML, such as a browser's, is redirected to the passport page.

Status codes

200The passport, or the list of passport ids.
303A redirect to the passport page, for a browser.
400The id, the product identifier, the request body or a query value is not valid.
404No published passport matches.
405This path does not take this method.
500The passport could not be read just now. Try again shortly.
501EN 18222 defines this method, and we do not offer it.

Every error except 501 carries a result object. It holds a list of messages, each with messageType, text, code and timestamp. Programs should read code, which never changes.

These methods only read. To create or change passports, use the authenticated API.