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
| country | The 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. |
| market | The buyer's selected language (on Shopify: localization.language.iso_code). Honoured when it is an official language of the country. |
| locale | The storefront/UI language. Weakest signal; also used as the buyer's language when market is absent. |
| defaultCountry | Your shop's own country. Used only when country is empty. |
| forced | Explicit language override (e.g. forced=de). Wins over everything. |
| v | The artwork version from the manifest. When it is current, the response may be cached for a year. |
| shop | Optional: 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:
- forced
- country → that country's official language (market or locale is used if it is co-official there, e.g. Belgium: nl / fr / de)
- market
- defaultCountry → its official language
- locale
- 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
altand provide the full text from/api/notice.txt(with itslang) 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.