Prijeđi na sadržaj
Customs Check
RegistracijaIzradi račun

Razvojni programeri

API carinske provjere

Ista provjera kao na ovoj stranici, pozvana iz vašeg softvera. Šaljete predmet u JSON-u i primate ocjenu od 100, blokirajuće točke, upozorenja i preporučene radnje — sa stabilnim šiframa nepravilnosti i porukama na 24 službena jezika Europske unije.

Ovo je API između poslužitelja. Ključ API-ja je tajna. Pozivi iz preglednika nisu podržani i na autentificiranim rutama ne šalju se CORS zaglavlja: ključ koji dospije u preglednik je otkriveni ključ.

Pregled

API izlaže kontrolni mehanizam validatora: četrnaest općih pravila, pet pravila TARIC-a, četiri pravila potpunosti dokumentacije i validatore svakog sustava deklaracija. Ništa ne šalje: provjerava format i dosljednost vaše dokumentacije, postojanje oznaka u nomenklaturi te, pri uvozu u EU, mjere TARIC-a koje vrijede za podrijetlo (antidamping, kontrole, povlastice, stopa carine), prije nego što pripremite deklaraciju.

Sve rute nose prefiks svoje verzije. Rute za otkrivanje i specifikacija su javne: integrator ili agent može pročitati shemu i prije nego što ima ključ.

RutaUlogaAutentifikacija
POST/v1/checksProvjerava predmet i vraća potpuno izvješćePotreban ključ
POST/v1/checks/batchProvjerava do 25 predmeta u jednom pozivuPotreban ključ
GET/v1/meVraća trenutni ključ i njegovu kvotu, ne trošeći jePotreban ključ
GET/v1/declaration-typesNabraja prepoznate vrste deklaracijaJavna
GET/v1/declaration-types/{type}Opisuje polja koja se očekuju za pojedinu vrstuJavna
GET/v1/openapi.jsonSpecifikacija OpenAPI 3.1 ovog API-jaJavna

Autentifikacija

API se autentificira nositeljskim tokenom. Token se prikazuje samo jednom, pri stvaranju: čuva se samo njegov otisak, pa se izgubljeni ključ zamjenjuje, nikad ne obnavlja.

Možete istodobno držati tri aktivna ključa, što omogućuje rotaciju ključa bez prekida integracije: stvorite novi, uvedite ga, a zatim opozovite stari.

  1. 01Stvorite ključ iz svog računa, u odjeljku „Ključevi API“.
  2. 02Šaljite ga u zaglavlju Authorization svakog zahtjeva.
  3. 03Opozovite ga u slučaju curenja: prekid je trenutačan, a sadržaj predmeta podnesenih tim ključem odmah se briše.
Authorization: Bearer cc_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Prva provjera

Predmet se sastoji od vrste, zaglavlja i redaka robe. Sve su vrijednosti nizovi znakova: za njihovo tumačenje brine se mehanizam. Nazivi polja otkrivaju se u izvođenju, vrstu po vrstu.

Odgovor stiže odmah; nakon toga nema se što ispitivati.

Zahtjev
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" }
  }'

Čitanje odgovora

Svaka nepravilnost nosi i strojni identitet i čitljivu rečenicu. Gradite svoju logiku na strojnom identitetu: on se ne mijenja bez promjene verzije.

severity · code · path · rule
Stabilan ugovorStabilne. Mogu se pojaviti nove šifre; postojeće se ne preimenuju bez promjene verzije.
field · message · text
Samo prikazPrevedeno za prikaz. Formulacija se može promijeniti u svakom trenutku — nikada ih ne uspoređujte u kodu.
engine.version
Mijenja se čim promjena pravila pomakne ocjenu nepromijenjenog predmeta. Arhivirajte je zajedno s izvješćima.

Polje „path“ odražava oblik vašeg zahtjeva, pa nepravilnost možete povezati izravno s odgovarajućim poljem u vlastitom sučelju.

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

Odgovor
{
  "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" }
}

Otkrivanje polja

Vrste deklaracija i njihova polja su javni, ključ nije potreban. To je ruta za izradu obrasca, za punjenje mapiranja iz vašeg ERP-a ili za predaju sheme agentu koji je mora ispuniti.

Nazivi vraćeni ovdje točno su ključevi koji se koriste u zaglavlju i u svakom retku robe. Popisi opcija vraćaju se razriješeni i prevedeni; dodajte parametar da ih izostavite ako vam se odgovor čini pretežak.

# 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"

Skupna obrada

Do 25 predmeta po pozivu. Odgovor je uvijek uspješan čim je skup prihvaćen, a svaki unos nosi vlastiti status: jedan loše oblikovan predmet nikada ne obara ostale.

Ako preostala kvota ne pokriva sve valjane unose, odbija se cijeli skup umjesto djelomične obrade — nikada ne morate nagađati gdje je obrada stala.

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 i alati

Osim REST ruta, isti mehanizam i isti podaci dostupni su iz AI asistenta, putem poslužitelja Model Context Protocol (MCP), i iz API klijenta, putem gotove Postman kolekcije. Oboje koristi API ključ i dnevnu kvotu opisane gore.

MCP poslužitelj

MCP poslužitelj omogućuje asistentu da traži carinske kodove, čita uvozne carine EU-a za kod, provjerava broj EORI, PDV ili AEO u službenim registrima i provjerava nacrt deklaracije, bez ijednog retka vezivnog koda. Odgovara na POST /api/mcp, s JSON odgovorima.

Bez stanja je i govori obje generacije protokola: reviziju 2026-07-28, u kojoj svaki zahtjev nosi svoju verziju, i ranije revizije koje počinju pozivom initialize. Povezivanje, otkrivanje i popis alata ne koštaju ništa; svaki poziv alata troši jednu jedinicu dnevne kvote ključa.

Autentifikacija je isti bearer token kao i za REST API. Klijent koji podržava samo prijavu putem OAuth-a, poput web konektora claude.ai, još se ne može povezati: upotrijebite klijenta koji omogućuje postavljanje zaglavlja.

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_declarationProvjera nacrta deklaracije: ocjena od 100, razina i svaki problem s poljem i radnjom. Ne čuva sadržaj datoteke osim ako se to ne zatraži.
list_declaration_typesPodržani sustavi deklaracija, s tijelom, regijom i očekivanim dokumentima.
describe_declaration_typePolja zaglavlja i stavki određene vrste, za izradu ulaza za check_declaration.
search_hs_codesKandidati iz Kombinirane nomenklature prema opisu proizvoda, na bilo kojem od 24 jezika EU-a.
describe_hs_codePostoji li kod od 4 do 10 znamenki u važećoj nomenklaturi, s njegovim službenim putem i tekstom.
lookup_import_dutyUvozna carina EU-a za kod prema podacima TARIC Komisije: carina za treće zemlje, povlastice za podrijetlo, kvote, antidamping i kontrole.
search_chemicalKemijska tvar prema CAS broju, CUS broju ili nazivu u popisu ECICS Komisije: oznaka kombinirane nomenklature navedena za svaki unos, za provjeru.
get_quota_balancePreostalo stanje carinske kvote EU-a u bazi QUOTA Komisije, prema rednom broju ili prema oznaci i podrijetlu: stanje, status (otvorena, kritična, blokirana, iscrpljena), razdoblje i vrijeme očitanja.
validate_eoriFormat broja EORI i njegov status u službenom registru (Europska komisija, HMRC).
validate_vatFormat broja PDV-a EU-a i njegova valjanost u VIES-u, s upisanim nazivom ako je objavljen.
check_rexFormat REX broja registriranog izvoznika i njegov status u bazi REX Komisije (valjan, opozvan ili nepoznat), s datumima.
screen_sanctionsPoduzeće, osoba ili brod prema popisima sankcija EU-a, UN-a, Ujedinjene Kraljevine i SAD-a, koji se ažuriraju svaki dan: svako podudaranje s ocjenom, snažno ili djelomično.
search_aeoPretraga Komisijine baze ovlaštenih gospodarskih subjekata prema nazivu tvrtke.
  • Carinski kodovi su prijedlozi izvedeni iz teksta nomenklature. Razvrstavanje može potvrditi samo deklarant ili obvezujuća tarifna informacija carine.
  • Carine su okvirne: uvjeti, isključenja po zemljama i iscrpljene kvote ne ocjenjuju se. Svaki odgovor nosi referentni datum izvatka TARIC-a, koji se osvježava mjesečno.
  • Registar koji ne odgovara prijavljuje se kao nedostupan, nikada kao nevažeći broj. Carini se nikada ništa ne šalje.

Postman kolekcija

Kolekcija se generira iz specifikacije OpenAPI pa joj uvijek odgovara: jedan zahtjev po ruti, grupiran po oznaci, s kosturom tijela za svaki POST. Uvezite je u Postman, popunite varijablu apiKey (čuva se kao tajna) i zahtjevi su spremni za slanje.

Preuzmi kolekciju

Kvota

Svaki ključ ima 500 provjera po kalendarskom danu UTC. Trenutno stanje putuje uz svaki autentificirani odgovor, pa za njega nikad ne trebate dodatni poziv.

Odbijeni pozivi također se broje: klijent koji se vrti u petlji na neispravnim zahtjevima sam se ograničava. Kvota se određuje po ključu — pišite nam ako vam treba više.

Odgovor
X-RateLimit-Limit: 500
X-RateLimit-Remaining: 437
X-RateLimit-Reset: 1789603200
X-RateLimit-Policy: 500;w=86400

Pogreške

Poruke o pogreškama su samo na engleskom: to su protokolne poruke namijenjene razvojnim programerima. Prevodi se samo sadržajni dio.

Svaki odgovor nosi identifikator zahtjeva, ponovljen u tijelu. Navedite ga kada nam se obratite — vodi nas ravno do poziva.

{
  "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"
  }
}
StatuscodeZnačenje
400invalid_jsonTijelo nije valjan JSON.
422invalid_requestJSON je valjan, ali njegov sadržaj nije. Pojedinosti navode pogrešno polje.
401missing_credentialsZaglavlje Authorization nedostaje ili je loše oblikovano.
401invalid_keyNepoznat ključ.
401key_revokedOpozvan ključ.
403account_suspendedRačun vlasnika ključa je suspendiran.
415unsupported_media_typeVrsta sadržaja nije JSON.
413payload_too_largeTijelo zahtjeva je preveliko.
429rate_limit_exceededDnevna kvota je dosegnuta. Vidjeti zaglavlje Retry-After.
500internal_errorPogreška na našoj strani. Pokušajte ponovno pa nam je prijavite s identifikatorom zahtjeva.

Podaci i čuvanje

Predmeti poslani putem API-ja podaci su vaših klijenata: čuvamo što manje, a vi imate prekidač da se ne čuva ništa.

  • Pošaljite „store“ kao false i nikakav sadržaj predmeta neće biti zapisan: ostaju samo ocjena i šifre nepravilnosti.
  • Inače se sadržaj predmeta briše nakon 30 dana.
  • Opoziv ključa odmah briše sadržaj predmeta koje je podnio.
  • Obrada se odvija u Frankfurtu, a baza podataka smještena je u Europskoj uniji.
  • Putem API-ja ne prenosi se nijedna datoteka: samo navodite koje isprave posjedujete.

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

Što ovaj API nije

Provjera pomaže u pripremi. Ne predstavlja potvrdu carinske uprave, ništa ne podnosi i ne zamjenjuje propisane obveze koje se primjenjuju na vaš posao.

Carinske oznake provjeravaju se po formatu, postojanju u nomenklaturi i, pri uvozu u EU, prema mjerama TARIC-a za njihovo podrijetlo, nikada po razvrstavanju robe: postojeća oznaka ostaje oznaka za provjeru. Mjere TARIC-a su okvirne (mjesečni izvadak Europske komisije): isključenja zemalja, iscrpljene kvote i uvjetne carine ne procjenjuju se.