Notice Image API

Show the official EU notice on the legal guarantee of conformity (Commission Implementing Regulation (EU) 2025/1960, Annex I) in your own component: a custom dialog, a headless storefront, or anywhere the app's theme blocks don't fit. We serve the European Commission's artwork unaltered, in all 24 official languages, and pick the language for the buyer's country.

Quick start

Fetch the manifest once (it changes only when the Commission artwork does), then render the image together with a clickable link to the Your Europe page in the same language, and the official text for screen readers:

GET https://eu-guarantee.consentico.com/api/notice/manifest.json
→ { "version": "…", "locales": { "fr": { "svg": "…", "png": "…", "yourEurope": "…" } }, … }
<a href="https://europa.eu/youreurope/citizens/consumers/shopping/guarantees-returns/index_fr.htm"
   target="_blank" rel="noopener">
  <img src="https://eu-guarantee.consentico.com/api/notice.svg?country=fr&market=fr&v=VERSION"
       alt="EU legal guarantee of conformity notice" width="595" height="842">
</a>
<!-- official wording from https://eu-guarantee.consentico.com/api/notice.txt?country=fr&market=fr&v=VERSION,
     e.g. in a visually hidden element with lang="fr" -->

You can also let the API resolve the language. In a Shopify Liquid theme:

{%- capture egl_notice -%}
https://eu-guarantee.consentico.com/api/notice.svg?country={{ localization.country.iso_code | downcase }}&market={{ localization.language.iso_code | slice: 0, 2 | downcase }}&defaultCountry={{ shop.address.country_code | downcase }}&v=VERSION
{%- endcapture -%}
<img src="{{ egl_notice | strip }}" alt="…" width="595" height="842" loading="lazy">

In Hydrogen or another Storefront API client, pass localization.country.isoCode and localization.language.isoCode the same way.

Endpoints

  • GET /api/notice.svg: vector artwork (~60 KB compressed). Preferred.
  • GET /api/notice.png: 1000 px raster twin, for surfaces that can't render external SVG (e.g. checkout UI extensions).
  • GET /api/notice.txt: the official wording of the notice as plain text, for a screen-reader text alternative. Taken verbatim from the Commission's own per-language PDFs.
  • GET /api/notice/link: redirects to the Your Europe page in the same language as the image (same parameters), so your link always matches the artwork.
  • GET /api/notice/manifest.json: current version, per-language URLs and hashes, parameters, the country → language map and the changelog.

All endpoints are public, CORS-enabled and need no API key.

Parameters

countryThe buyer's selected country, ISO 3166-1 alpha-2 (on Shopify: localization.country.iso_code). Drives the legally required language. Never inferred from the IP address.
marketThe buyer's selected language (on Shopify: localization.language.iso_code). Honoured when it is an official language of the country.
localeThe storefront/UI language. Weakest signal; also used as the buyer's language when market is absent.
defaultCountryYour shop's own country. Used only when country is empty.
forcedExplicit language override (e.g. forced=de). Wins over everything.
vThe artwork version from the manifest. When it is current, the response may be cached for a year.
shopOptional: your store's myshopify.com domain. Never required and never gates anything; it lets us see who builds on the API so we can reach you about artwork changes.

Precedence, first match wins:

  1. forced
  2. country → that country's official language (market or locale is used if it is co-official there, e.g. Belgium: nl / fr / de)
  3. market
  4. defaultCountry → its official language
  5. locale
  6. English

EU outermost regions (Guadeloupe, Martinique, French Guiana, Réunion, Mayotte, Saint-Martin) resolve to French, and the Åland Islands to Swedish. Unknown values fall back to English. Check the X-Notice-Locale response header to see which language was served.

Versioning & caching

Append the manifest's version as v=. When it is current, the response is served with Cache-Control: public, max-age=31536000, immutable. Without a current v, responses are cached for one day with an ETag for revalidation, so an artwork correction reaches returning visitors within a day. You don't need a cache-busting parameter of your own: requests with unknown or malformed parameters are redirected (301) to the canonical URL. Poll the manifest (hourly is plenty) to pick up a new version.

Responses include X-Notice-Locale and X-Notice-Version (both readable cross-origin). Responses are served through Cloudflare's cache. Fair use applies: a per-IP limit of 100 requests per 10 seconds guards against floods, far above what a storefront needs (a few requests per page view).

Your responsibilities when embedding

  • Show the artwork unaltered and in colour. Don't crop, recolour or re-typeset it.
  • Keep a clickable link to the Your Europe page in the same language next to it. The QR code in the image can't be clicked, and links inside an <img> never work.
  • Decide placement and prominence with your legal adviser. We maintain the artwork and language resolution, not your legal assessment.
  • Give the image a short alt and provide the full text from /api/notice.txt (with its lang) for screen-reader users. The wording inside the artwork is drawn as shapes, so the image alone can't be read aloud.

Privacy

The language is chosen only from the parameters you send. The API never uses the visitor's IP address to choose it, sets no cookies and receives no personal data from you. (Note that Shopify itself may pre-select a visitor's country from their IP address on the first visit; that is the valuelocalization.country then reports.)

Maintenance & changelog

We check the European Commission's official downloads every week. Every file we serve is verified against them, byte for byte. When the Commission publishes a correction, we update the artwork, the version and this changelog. To be told by email, write to support@consentico.com.

  • 2026-09-21 · 2fd9be1aaa55

    /api/notice.txt: two wording fixes found while checking every language against the artwork — Maltese "Għall-oġġetti" had lost its hyphen (a line-break hyphen that belongs to the word), and the Hungarian "What to do" heading, which ends in an ellipsis, is now joined with its second line. Artwork unchanged.

  • 2026-09-21 · 021644dabb69

    /api/notice.txt: sentences that the source PDF split across two blocks are now joined, so the text alternative reads as whole sentences (the "What to do" heading with its subheading, and a step whose last word wrapped). Bulleted items and the two steps stay separate paragraphs. Wording unchanged; the artwork is unchanged. Reported by an integrator.

  • 2026-09-20 · dd50adcd4a83

    Added the official text of the notice per language (/api/notice.txt, extracted from the Commission's PDFs) and a Your Europe link redirect (/api/notice/link). EU outermost regions (GP, MQ, GF, RE, YT, MF) now resolve to French and Åland (AX) to Swedish; `locale` selects a co-official language when `market` is absent. Versioned caching via `v`. Artwork unchanged.

  • 2026-08-15 · dd50adcd4a83

    Official European Commission notice artwork, 24 languages, colour (Commission SVG set of July 2026).

Support

The endpoints are free to use. For a supported integration with setup help and email support, install the app on your Shopify store on the Pro or Business plan. Questions: support@consentico.com.