Přejít na obsah
Customs Check
RegistraceVytvořit účet

Pro vývojáře

API celní kontroly

Stejná kontrola jako na tomto webu, volaná z vašeho softwaru. Odešlete spis v JSON a získáte skóre ze 100, blokující body, upozornění a doporučené kroky — se stabilními kódy nesrovnalostí a hlášeními ve 24 úředních jazycích Evropské unie.

Toto je API mezi servery. Klíč API je tajemství. Volání z prohlížeče nejsou podporována a na ověřených cestách se neposílají žádné hlavičky CORS: klíč, který se dostane do prohlížeče, je vyzrazený klíč.

Přehled

API zpřístupňuje kontrolní jádro validátoru: čtrnáct průřezových pravidel, pět pravidel TARIC, čtyři pravidla úplnosti dokladů a validátory jednotlivých deklaračních systémů. Nic neodesílá: kontroluje formát a soudržnost vaší dokumentace, existenci kódů v nomenklatuře a u dovozu do EU opatření TARIC platná pro původ (antidumping, kontroly, preference, celní sazba), než připravíte prohlášení.

Každá cesta nese předponu své verze. Cesty pro objevování a specifikace jsou veřejné: integrátor nebo agent si může schéma přečíst ještě dříve, než má klíč.

CestaRoleOvěření
POST/v1/checksZkontroluje spis a vrátí úplný protokolVyžaduje klíč
POST/v1/checks/batchZkontroluje až 25 spisů v jednom voláníVyžaduje klíč
GET/v1/meVrátí aktuální klíč a jeho kvótu, aniž by ji čerpalVyžaduje klíč
GET/v1/declaration-typesVypíše rozpoznávané typy prohlášeníVeřejná
GET/v1/declaration-types/{type}Popíše pole očekávaná pro daný typVeřejná
GET/v1/openapi.jsonSpecifikace OpenAPI 3.1 tohoto APIVeřejná

Ověření

API se ověřuje tokenem bearer. Token se zobrazí jen jednou, při vytvoření: ukládá se pouze jeho otisk, ztracený klíč se tedy nahrazuje, nikdy neobnovuje.

Můžete držet tři aktivní klíče najednou, což umožňuje klíč rotovat bez přerušení integrace: vytvořte nový, nasaďte jej a starý zneplatněte.

  1. 01Vytvořte klíč ve svém účtu v sekci „Klíče API“.
  2. 02Posílejte jej v hlavičce Authorization každého požadavku.
  3. 03Při úniku jej zneplatněte: přerušení je okamžité a obsah spisů odeslaných tímto klíčem se vzápětí smaže.
Authorization: Bearer cc_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

První kontrola

Spis se skládá z typu, hlavičky a zbožových položek. Všechny hodnoty jsou řetězce: o jejich výklad se postará engine. Názvy polí se zjišťují za běhu, typ po typu.

Odpověď přijde okamžitě; poté není co dotazovat.

Požadavek
curl https://www.customs-check.com/api/v1/checks \
  -H "Authorization: Bearer $CUSTOM_CHECK_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "import-export",
    "reference": "PO-2026-114",
    "header": {
      "flow": "IM",
      "shipmentCountry": "CN",
      "destinationCountry": "FR",
      "incoterm": "FOB",
      "companyName": "Acme SAS",
      "companyCountry": "FR",
      "eori": "FR12345678900012",
      "transportMode": "sea",
      "currency": "USD",
      "invoiceTotal": "12500"
    },
    "items": [
      {
        "description": "Leather sport shoes",
        "hsCode": "6403990000",
        "quantity": "500",
        "value": "12500",
        "origin": "VN",
        "grossMass": "850",
        "netMass": "800"
      }
    ],
    "documents": { "commercialInvoice": "available", "packingList": "missing" }
  }'

Čtení odpovědi

Každá nesrovnalost nese jak strojovou identitu, tak čitelnou větu. Stavte svou logiku na strojové identitě: nemění se bez změny verze.

severity · code · path · rule
Stabilní smlouvaStabilní. Mohou přibýt nové kódy; stávající se bez změny verze nepřejmenovávají.
field · message · text
Pouze zobrazeníPřeloženo pro zobrazení. Formulace se může kdykoli změnit — nikdy je v kódu neporovnávejte.
engine.version
Změní se, jakmile úprava pravidel posune skóre nezměněného spisu. Archivujte ji spolu s protokoly.

Pole „path“ kopíruje tvar vašeho požadavku, takže nesrovnalost můžete napojit přímo na odpovídající pole ve svém rozhraní.

header.<pole> · items.<n>.<pole> · documents.<category> · global

Odpověď
{
  "id": "4c749e25-3408-48f9-b3ca-b18a7ad84681",
  "createdAt": "2026-09-16T12:46:13.186Z",
  "type": "import-export",
  "locale": "en",
  "reference": "PO-2026-114",
  "score": 90,
  "level": "good",
  "counts": { "errors": 0, "warnings": 2, "infos": 1 },
  "documents": { "commercialInvoice": "available", "packingList": "missing" },
  "issues": [
    {
      "severity": "warning",
      "code": "docPackingListMissing",
      "path": "documents.packingList",
      "rule": "DOC-002",
      "params": null,
      "field": "Packing list",
      "message": "Packing list not provided",
      "text": "Packing list not provided"
    },
    {
      "severity": "warning",
      "code": "docTransportMissing",
      "path": "documents.transportDocument",
      "rule": "DOC-003",
      "params": null,
      "field": "Transport document (B/L, AWB, CMR)",
      "message": "Transport document not provided",
      "text": "Transport document not provided"
    }
  ],
  "actions": [
    { "severity": "warning", "code": "docPackingListMissing",
      "path": "documents.packingList", "text": "Add: Packing list" }
  ],
  "tips": [
    {
      "severity": "info",
      "code": "taricControlsPossible",
      "path": "items.0.hsCode",
      "rule": "RULE-017",
      "params": { "measures": "Import control - CITES ; Import control on seal products" },
      "field": "Product 1 — HS / commodity code (if known)",
      "message": "Possible import controls depending on the goods (Import control - CITES ; Import control on seal products): check whether they apply.",
      "text": "Product 1 — HS / commodity code (if known): Possible import controls depending on the goods (Import control - CITES ; Import control on seal products): check whether they apply."
    }
  ],
  "engine": { "version": "1.6.0", "rules": 25, "taric": "2026-10-01" }
}

Objevování polí

Typy prohlášení a jejich pole jsou veřejné, klíč není potřeba. Tuto cestu použijte k sestavení formuláře, k naplnění mapování z vašeho ERP nebo k předání schématu agentovi, který jej má vyplnit.

Zde vrácené názvy jsou přesně ty klíče, které se používají v hlavičce a v každé zbožové položce. Seznamy voleb se vracejí vyřešené a přeložené; přidejte parametr, chcete-li je vynechat, pokud je odpověď příliš objemná.

# The 8 declaration types
curl "https://www.customs-check.com/api/v1/declaration-types?locale=en"

# The fields of one type
curl "https://www.customs-check.com/api/v1/declaration-types/h7?locale=en"

# Same, without the resolved option lists
curl "https://www.customs-check.com/api/v1/declaration-types/h7?options=false"

Dávkové zpracování

Až 25 spisů na volání. Odpověď je vždy úspěšná, jakmile je dávka přijata, a každá položka nese vlastní stav: jeden chybný spis nikdy neshodí ostatní.

Pokud zbývající kvóta nepokryje všechny platné položky, odmítne se celá dávka místo částečného zpracování — nikdy nemusíte hádat, kde se zpracování zastavilo.

curl https://www.customs-check.com/api/v1/checks/batch \
  -H "Authorization: Bearer $CUSTOM_CHECK_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "checks": [ { "type": "h7", "header": {}, "items": [] } ] }'

Agenti a nástroje

Kromě tras REST je stejný mechanismus a stejná data dostupná z asistenta s umělou inteligencí prostřednictvím serveru Model Context Protocol (MCP) a z klienta API prostřednictvím hotové kolekce pro Postman. Obojí používá klíč API a denní kvótu popsané výše.

Server MCP

Server MCP umožňuje asistentovi vyhledávat celní kódy, číst dovozní clo pro daný kód, ověřovat číslo EORI, DPH nebo AEO v oficiálních registrech a kontrolovat návrh prohlášení, aniž byste museli napsat jediný řádek spojovacího kódu. Odpovídá na POST /api/mcp, odpovědi jsou ve formátu JSON.

Je bezstavový a mluví oběma generacemi protokolu: revizí 2026-07-28, kde každý požadavek nese svou verzi, a staršími revizemi, které začínají voláním initialize. Připojení, zjišťování a výpis nástrojů nic nestojí; každé volání nástroje spotřebuje jednu jednotku denní kvóty klíče.

Ověřování používá stejný token bearer jako REST API. Klient, který podporuje pouze přihlášení přes OAuth, například webové konektory claude.ai, se zatím nemůže připojit: použijte klienta, který umožňuje nastavit hlavičku.

POST https://www.customs-check.com/api/mcp

claude mcp add --transport http customs-check https://www.customs-check.com/api/mcp \
  --header "Authorization: Bearer $CUSTOM_CHECK_KEY"
check_declarationKontrola návrhu prohlášení: skóre ze 100, úroveň a každý problém s polem a doporučenou akcí. Obsah souboru neukládá, pokud o to nepožádáte.
list_declaration_typesPodporované systémy prohlášení s orgánem, regionem a očekávanými doklady.
describe_declaration_typePole záhlaví a položek daného typu, ze kterých se sestaví vstup pro check_declaration.
search_hs_codesKandidátní kódy kombinované nomenklatury podle popisu výrobku v kterémkoli ze 24 jazyků EU.
describe_hs_codeZda 4 až 10místný kód existuje v platné nomenklatuře, s jeho oficiální cestou a zněním.
lookup_import_dutyDovozní clo EU pro kód podle dat TARIC Komise: clo pro třetí země, preference pro původ, kvóty, antidumping a kontroly.
search_chemicalChemická látka podle čísla CAS, čísla CUS nebo názvu v soupisu ECICS Komise: kód kombinované nomenklatury uvedený u každé položky, k ověření.
get_quota_balanceZbývající zůstatek celní kvóty EU v databázi QUOTA Komise podle pořadového čísla nebo podle kódu a původu: zůstatek, stav (otevřená, kritická, blokovaná, vyčerpaná), období a čas načtení.
validate_eoriFormát čísla EORI a jeho stav v oficiálním registru (Evropská komise, HMRC).
validate_vatFormát čísla DPH EU a jeho platnost ve VIES, včetně zapsaného názvu, pokud je zveřejněn.
check_rexFormát čísla REX registrovaného vývozce a jeho stav v databázi REX Komise (platné, zrušené nebo neznámé), s daty.
screen_sanctionsSpolečnost, osoba nebo plavidlo vůči sankčním seznamům EU, OSN, Spojeného království a Spojených států, aktualizovaným každý den: každá shoda se skóre, silná nebo částečná.
search_aeoVyhledávání v databázi Komise o schválených hospodářských subjektech podle názvu společnosti.
  • Celní kódy jsou návrhy převzaté z textu nomenklatury. Zařazení může potvrdit pouze deklarant nebo závazná informace o zařazení zboží od celní správy.
  • Cla jsou orientační: podmínky, výjimky pro země a vyčerpané kvóty se nevyhodnocují. Každá odpověď nese referenční datum výpisu TARIC, který se obnovuje měsíčně.
  • Registr, který neodpoví, je hlášen jako nedostupný, nikdy jako neplatné číslo. Celní správě se nikdy nic neposílá.

Kolekce pro Postman

Kolekce se generuje ze specifikace OpenAPI, takže jí vždy odpovídá: jeden požadavek na trasu, seskupené podle značky, s kostrou těla pro každý POST. Importujte ji do Postmanu, vyplňte proměnnou apiKey (uchovávanou jako tajnou) a požadavky jsou připraveny k odeslání.

Stáhnout kolekci

Kvóta

Každý klíč má 500 kontrol na kalendářní den UTC. Aktuální stav cestuje s každou ověřenou odpovědí, takže k jeho zjištění nikdy nepotřebujete další volání.

Počítají se i odmítnutá volání: klient smyčkující na neplatných požadavcích si sám přiškrtí přístup. Kvóta je stanovena na klíč — napište nám, pokud potřebujete více.

Odpověď
X-RateLimit-Limit: 500
X-RateLimit-Remaining: 437
X-RateLimit-Reset: 1789603200
X-RateLimit-Policy: 500;w=86400

Chyby

Chybová hlášení jsou pouze anglicky: jde o protokolová hlášení určená vývojářům. Překládá se jen věcný obsah.

Každá odpověď nese identifikátor požadavku, zopakovaný v těle. Uveďte jej, když se na nás obrátíte — dovede nás přímo k danému volání.

{
  "error": {
    "code": "invalid_request",
    "message": "The request body failed validation.",
    "details": [
      { "path": "items.0.quantity", "message": "expected a string" }
    ],
    "requestId": "2bbb0946-6178-4b54-921c-b28f794c44bd"
  }
}
StavcodeVýznam
400invalid_jsonTělo není platný JSON.
422invalid_requestJSON je platný, ale jeho obsah nikoli. Detail uvádí chybné pole.
401missing_credentialsHlavička Authorization chybí nebo je poškozená.
401invalid_keyNeznámý klíč.
401key_revokedZneplatněný klíč.
403account_suspendedÚčet vlastníka klíče je pozastaven.
415unsupported_media_typeTyp obsahu není JSON.
413payload_too_largeTělo požadavku je příliš velké.
429rate_limit_exceededDenní kvóta vyčerpána. Viz hlavička Retry-After.
500internal_errorChyba na naší straně. Zkuste to znovu a nahlaste nám ji s identifikátorem požadavku.

Data a uchovávání

Spisy zaslané přes API jsou data vašich zákazníků: uchováváme co nejméně a vy máte přepínač, jak neuchovat nic.

  • Pošlete „store“ jako false a žádný obsah spisu se nezapíše: zůstane jen skóre a kódy nesrovnalostí.
  • Jinak se obsah spisů maže po 30 dnech.
  • Zneplatnění klíče okamžitě smaže obsah spisů, které jím byly odeslány.
  • Zpracování probíhá ve Frankfurtu a databáze je hostována v Evropské unii.
  • Přes API se nenahrávají žádné soubory: pouze uvedete, které doklady máte.

200 items · 256 KB · 25 / batch · reference ≤ 64

Čím toto API není

Kontrola pomáhá s přípravou. Nepředstavuje schválení celní správou, nic nepodává a nenahrazuje regulatorní povinnosti platné pro vaši operaci.

Celní kódy se ověřují na formát, existenci v nomenklatuře a u dovozu do EU na opatření TARIC pro jejich původ, nikdy na zařazení zboží: existující kód zůstává kódem k ověření. Opatření TARIC jsou orientační (měsíční výpis Evropské komise): vyloučení zemí, vyčerpané kvóty a podmíněná cla se nehodnotí.