REST API · v1

API documentation

Check the sanction status of a CN code directly in your TMS, ERP or compliance application. JSON over HTTPS, OpenAPI 3.1. A single endpoint, GET /api/v1/cn, returns the verdict and the full legal context: regime, annex, article, exemptions and a link to EUR-Lex. A higher limit with an API key and webhooks are set up individually, after a conversation.

Download openapi.json Plans and API

Base URL

https://restrikt.eu/api/v1
GET/cn?q=&lang=pl

Check a CN code or a product name

Returns the verdict (restricted or no_match) and a list of matches. For a CN code a prefix rule applies: typing 7304 will also find 7304 11 00, and a full code will hit the parent heading. A no_match result does not mean that trade is allowed.

Query parameters

ParameterRequiredDescription
qyesCN code (e.g. 7304 11 00 or 73041100) or a fragment of a product name. Spaces in the code are ignored.
langnoLanguage of names and labels: 'pl' (default) or 'en'.

Example request

curl "https://restrikt.eu/api/v1/cn?q=7304%2011%2000&lang=en"

Example response

{
  "query": "7304 11 00",
  "matched_as": "cn_code",
  "verdict": "restricted",
  "has_prohibition": true,
  "results": [
    {
      "cn_code": "7304 11 00",
      "name": "Tubes, pipes and hollow profiles, seamless, of iron (other than cast iron) or steel",
      "restriction": {
        "type": "export_ban",
        "label": "Export ban",
        "direction": "export"
      },
      "annex": "XXIII",
      "article": "3k(1b)",
      "has_exemptions": false,
      "exemption": null,
      "valid_from": null,
      "valid_to": null,
      "regime": {
        "code": "RU_833_2014",
        "name_en": "EU sanctions against Russia",
        "name_pl": "Sankcje UE wobec Rosji",
        "legal_act": "Council Regulation (EU) No 833/2014",
        "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2014/833/2026-07-24/pol",
        "eur_lex_url_en": "https://eur-lex.europa.eu/eli/reg/2014/833/2026-07-24/eng",
        "eur_lex_url_pl": "https://eur-lex.europa.eu/eli/reg/2014/833/2026-07-24/pol",
        "target_country_code": "RU",
        "consolidated_version": "2026-07-24"
      },
      "source": "EUR-Lex 02014R0833-20260724",
      "source_version": "2026-07-24",
      "data_quality": "verified",
      "partial_entry": false
    }
  ],
  "cn_exists": true,
  "cn_name": null,
  "disclaimer": "This result is informational only and is not legal or customs advice. The binding source is the EU regulation and the decision of customs authorities. Check the source and version date.",
  "meta": {
    "returned": 1,
    "source": "sankcje-check-api/v1"
  }
}

Shortened to one result. The full response also has the fields scope (what was checked), winddowns (wind-down periods) and derogations (grounds for derogations).

Limits and error responses

Requests without a key are rate limited by IP address. Exceeding the limit returns status 429. A missing q parameter returns 400, a database error returns 500. CORS is enabled. An API key with a higher limit is issued individually, once the scope is agreed. Do not share the key with third parties.

API for businesses

Today: an API key with a higher request limit, change webhooks and implementation help, set up individually. Planned: team accounts and an audit log. Price individual, matched to the scale of the integration.

Ask about the API