Kontrola-STK.cz
Kontrola-STK.cz API · v1

Data o vozidlech přímo ve vašem systému

REST API nad Registrem silničních vozidel ČR a databází technických prohlídek. Historie STK se závadami, stav tachometru s detekcí stočení, vlastníci, převod SPZ na VIN a vozový park firmy podle IČO – ve strojově čitelném JSON.

GET/v1/vehicles/{vin}
{
  "data": {
    "vin": "TMBHG41U942882738",
    "make": "ŠKODA",
    "model": "OCTAVIA",
    "summary": {
      "inspections_count": 18,
      "last_odometer_km": 332511,
      "odometer_rollback": true
    }
  }
}

Úvod

API je určené firmám, které pracují s ojetými vozidly nebo spravují vozový park a chtějí data z registru používat automaticky – bez ručního vyhledávání na webu.

Autobazary a dovozciPrověření vozidla při výkupu, doplnění inzerátu o historii STK a tachometru.
Leasing a pojišťovnyKontrola rizik před uzavřením smlouvy, ověření stavu a vlastnictví.
Správci flotilPřehled vozidel firmy podle IČO, hlídání termínů STK.
Vývojáři a partneřiIntegrace do DMS, CRM, ERP nebo vlastních aplikací.
Business

API je součástí tarifu Business

Tarif Business zahrnuje vše z Premium, hromadné vyhledávání, přehled flotily a přístup k API. Bez automatického obnovování.

499 Kčměsíčně (nebo 4 990 Kč ročně)
1 000požadavků denně
60požadavků za minutu
Tarif Business

Základní adresa

https://kontrola-stk.cz/api/v1

Všechny endpointy používají metodu GET, komunikace probíhá výhradně přes HTTPS a odpovědi jsou v kódování UTF-8.

Rychlý start

  1. Aktivujte tarif Businessna stránce předplatného. Platba přes GoPay, faktura přijde e-mailem.
  2. Vytvořte API klíčv účtu v sekci API klíče. Celý klíč se zobrazí jen jednou – uložte si ho.
  3. Pošlete první požadaveks klíčem v hlavičce Authorization:
curl -s "https://kontrola-stk.cz/api/v1/vehicles/TMBEFF61317338900?include=inspections,odometer" \
  -H "Authorization: Bearer $KSTK_API_KEY"

Autentizace

Každý požadavek musí obsahovat platný API klíč. Klíč má tvar kstk_live_ následovaný 40 znaky a posíláte ho v jedné z hlaviček:

Authorization: Bearer kstk_live_3fa94c2e…
# nebo
X-API-Key: kstk_live_3fa94c2e…
  • Klíče vytváříte a zneplatňujete v účtu na stránce API klíče. Najednou můžete mít až 5 aktivních klíčů – doporučujeme samostatný klíč pro každý systém.
  • Klíč nikdy neposílejte v URL (API ho v adrese nepřijímá) a nevkládejte ho do kódu, který běží v prohlížeči nebo mobilní aplikaci. Volejte API ze svého serveru.
  • Uchováváme pouze otisk (hash) klíče – ztracený klíč nelze obnovit, jen vytvořit nový.
  • Limity se počítají za celý účet, ne za jednotlivé klíče.
  • Pokud tarif Business vyprší, API vrací 403 business_required. Po prodloužení předplatného začnou stávající klíče znovu fungovat.

Limity a hlavičky

1 000 / den
kalendářní den, obnova o půlnoci (Europe/Prague)
60 / minutu
klouzavé okno 60 sekund

Po překročení limitu API vrátí 429 Too Many Requests s hlavičkou Retry-After. Do limitu se nezapočítávají požadavky odmítnuté kvůli neplatnému klíči, chybějícímu tarifu nebo překročení limitu, ani chyby na naší straně (5xx). Každá odpověď obsahuje tyto hlavičky:

HlavičkaVýznam
X-RateLimit-LimitDenní limit požadavků vašeho účtu (1 000).
X-RateLimit-RemainingKolik požadavků vám dnes ještě zbývá.
X-RateLimit-ResetUnix timestamp obnovení denního limitu (půlnoc, Europe/Prague).
X-RateLimit-Minute-LimitLimit požadavků za posledních 60 sekund (60).
X-RateLimit-Minute-RemainingZbývající požadavky v aktuálním minutovém okně.
Retry-AfterJen u odpovědi 429 – za kolik sekund můžete požadavek zopakovat.
X-Request-IdJedinečné ID požadavku (také v meta.request_id). Uveďte ho, když nás kontaktujete kvůli konkrétnímu volání.
Potřebujete vyšší limity, například pro jednorázové prověření celého skladu? Napište nám na [email protected] – připravíme individuální nabídku.

Formát odpovědí

Odpovědi mají vždy Content-Type: application/json; charset=utf-8 a jednotnou obálku. Úspěšná odpověď obsahuje data, chybová error; obě nesou meta s ID požadavku a časem vytvoření.

200 Úspěch
{
    "data": {
        "vin": "TMBHG41U942882738",
        "…": "…"
    },
    "meta": {
        "request_id": "req_4f1c2a9be07d3a51c6e2",
        "generated_at": "2026-10-09T14:32:05+02:00"
    }
}
404 Chyba
{
    "error": {
        "code": "not_found",
        "message": "Vozidlo s VIN … nebylo v registru nalezeno."
    },
    "meta": {
        "request_id": "req_4f1c2a9be07d3a51c6e2",
        "generated_at": "2026-10-09T14:32:05+02:00"
    }
}
  • Názvy polí jsou anglicky v snake_case, textové hodnoty z registru zůstávají v češtině (např. barva, druh prohlídky).
  • Data jsou ve formátu YYYY-MM-DD, časy v ISO 8601 s časovou zónou.
  • Chybějící údaje mají hodnotu null, prázdné seznamy jsou []. Pole v odpovědích můžeme v rámci verze v1 přidávat – vaše aplikace by měla neznámá pole ignorovat.
  • Výsledek prohlídky: passed (způsobilé), passed_with_defects (způsobilé s vadami), failed (nezpůsobilé), repeat_required (opakovaná prohlídka). Závažnost závad: A lehká, B vážná, C nebezpečná.

Chyby

Stav požadavku poznáte podle HTTP kódu, konkrétní důvod podle error.code. Text v error.message je určen lidem a může se měnit – v kódu se rozhodujte podle error.code.

HTTPKódVýznam
400invalid_vinVIN nemá platný formát (17 znaků, bez I, O, Q).
400invalid_plateRegistrační značka nemá platný formát.
400invalid_icoIČO nemá platný formát.
400invalid_parameterNeplatná hodnota parametru dotazu (např. include, status).
401missing_api_keyPožadavek neobsahuje API klíč.
401invalid_api_keyAPI klíč neexistuje nebo je chybně zkopírovaný.
401revoked_api_keyAPI klíč byl zneplatněn.
403business_requiredÚčet nemá aktivní tarif Business (např. vypršelo předplatné).
403account_blockedÚčet vlastníka klíče je zablokován.
404not_foundVozidlo, značka nebo IČO nebylo v registru nalezeno.
429rate_limit_exceededPřekročen minutový limit požadavků.
429daily_limit_exceededVyčerpán denní limit požadavků.
500internal_errorNeočekávaná chyba na naší straně.
502upstream_errorZdroj dat (registr vozidel) je dočasně nedostupný.
503not_availableFunkce je dočasně nedostupná.

Při chybách 429, 502 a 503 doporučujeme opakovat požadavek s prodlevou (exponential backoff), u 429 podle hlavičky Retry-After.

GET /v1/vehicles/{vin}

Detail vozidla podle VIN

Vrátí kompletní záznam vozidla z registru: základní a technické údaje, registraci, historii technických prohlídek se závadami, vývoj tachometru s detekcí stočení, vlastníky a provozovatele, dovoz, vyřazení z provozu a výbavu. Základní údaje a souhrn (summary) jsou v odpovědi vždy.

Parametry

NázevUmístěníTypPopis
vin povinný cesta string VIN vozidla – 17 znaků, bez písmen I, O, Q. Velikost písmen nerozhoduje.
include query string Čárkou oddělený seznam sekcí, které chcete vrátit: technical, registration, inspections, odometer, owners, imports, deregistrations, equipment. Bez parametru se vrací vše. Menší odpověď = rychlejší zpracování.

Ukázka požadavku

curl -s "https://kontrola-stk.cz/api/v1/vehicles/TMBHG41U942882738" \
  -H "Authorization: Bearer $KSTK_API_KEY"

Ukázka odpovědi

200 application/json
{
    "data": {
        "vin": "TMBHG41U942882738",
        "make": "ŠKODA",
        "model": "OCTAVIA",
        "variant": "SEALHX01 FM5",
        "type": "ŠKODA OCTAVIA 1U / 1U",
        "kind": "OSOBNÍ AUTOMOBIL",
        "category": "M1",
        "body": "AC KOMBI",
        "status": {
            "code": "registered",
            "label": "PROVOZOVANÉ"
        },
        "first_registration": "2004-01-22",
        "first_registration_cz": "2004-01-22",
        "year": 2004,
        "color": "ŠEDÁ-METAL",
        "fuel": "NM",
        "summary": {
            "inspections_count": 18,
            "defects_count": 26,
            "owners_count": 9,
            "last_inspection": "2026-03-12",
            "last_result": "passed",
            "next_inspection": "2028-03-11",
            "next_inspection_days": 519,
            "last_odometer_km": 332511,
            "odometer_rollback": true
        },
        "engine": {
            "code": "ALH",
            "manufacturer": "VOLKSWAGEN, AG, WOLFSBURG, SRN",
            "displacement_ccm": 1896,
            "power_kw": 66,
            "max_speed_kmh": 182,
            "electric": false,
            "hybrid": false
        },
        "emissions": {
            "standard": "EURO 3",
            "co2": "184 / 116 / 140",
            "consumption": "6.8 / 4.3 / 5.2"
        },
        "dimensions": {
            "length": 4613,
            "width": 1731,
            "height": 1510,
            "wheelbase": 2500
        },
        "weights": {
            "curb_kg": 1360,
            "max_kg": 1875,
            "max_trailer_braked_kg": 1300,
            "max_trailer_unbraked_kg": 500
        },
        "seats": 5,
        "registration": {
            "plate": null,
            "plate_type": "STD. SILNIČNÍ",
            "tp_number": null,
            "orv_number": "UBO690169",
            "pcv": "3695492",
            "purpose": "Běžný provoz",
            "type_approval": "3460-445-02"
        },
        "inspections": [
            {
                "date": "2026-03-12",
                "type": "Opakovaná",
                "result_code": 1,
                "result": "passed",
                "result_label": "Způsobilé",
                "odometer_km": 332511,
                "next_inspection": "2028-03-11",
                "station": {
                    "name": "DROUŽKOVICKÁ 476, 43141, ÚDLICE",
                    "code": "3536",
                    "city": "Údlice",
                    "region": "Ústecký kraj"
                },
                "protocol_number": "CZ-3536-26-03-0587",
                "emission_check": true,
                "defects": [
                    {
                        "code": "2.1.3.7.1",
                        "severity": "A",
                        "description": "Prachovky pohyblivých spojů pákového mechanismu řízení jsou poškozené."
                    }
                ]
            },
            {
                "date": "2026-03-11",
                "type": "Pravidelná",
                "result_code": 2,
                "result": "passed_with_defects",
                "result_label": "Způsobilé s vadami",
                "odometer_km": 332500,
                "next_inspection": "2026-04-10",
                "station": {
                    "name": "DROUŽKOVICKÁ 476, 43141, ÚDLICE",
                    "code": "3536",
                    "city": "Údlice",
                    "region": "Ústecký kraj"
                },
                "protocol_number": "CZ-3536-26-03-0492",
                "emission_check": true,
                "defects": [
                    {
                        "code": "8.2.1.2.5",
                        "severity": "B",
                        "description": "U vozidel s OBD sdělovač MI (MIL) se po zapnutí zapalování nerozsvítí nebo po nastartování vozidla indikuje závadu."
                    },
                    {
                        "code": "4.1.4.3.2",
                        "severity": "B",
                        "description": "Nepovolená úprava světlometu."
                    }
                ]
            }
        ],
        "odometer": {
            "last_km": 332511,
            "records": 18,
            "km_per_year": 11578,
            "rollback_detected": true,
            "rollbacks": [
                {
                    "date": "2016-01-25",
                    "previous_date": "2016-01-18",
                    "from_km": 2131035,
                    "to_km": 213366
                }
            ]
        },
        "owners": [
            {
                "relation": "owner",
                "subject_type": "person",
                "name": null,
                "ico": null,
                "from": "2026-04-29",
                "to": null,
                "current": true
            },
            {
                "relation": "owner",
                "subject_type": "company",
                "name": "AutoESA a.s.",
                "ico": "25627538",
                "from": "2022-07-08",
                "to": "2022-07-25",
                "current": false
            },
            {
                "relation": "operator",
                "subject_type": "company",
                "name": "Grundfos Sales Czechia and Slovakia s.r.o.",
                "ico": "61975265",
                "from": "2004-01-22",
                "to": "2008-03-05",
                "current": false
            }
        ],
        "imports": [],
        "deregistrations": [],
        "equipment": [
            {
                "type": "TAŽNÉ ZAŘÍZENÍ",
                "from": null,
                "to": null
            }
        ]
    },
    "meta": {
        "request_id": "req_4f1c2a9be07d3a51c6e2",
        "generated_at": "2026-10-09T14:32:05+02:00"
    }
}

Ukázka odpovědi je zkrácená (2 z 18 prohlídek, 3 z 19 záznamů vlastníků). Jména fyzických osob API nevrací – u nich je name vždy null.

GET /v1/vehicles/{vin}/risk

Hodnocení rizik vozidla

Automatické vyhodnocení rizikových signálů z historie vozidla – například podezření na stočení tachometru, vážné a nebezpečné závady, neúspěšné prohlídky, propadlou STK nebo vysoký počet vlastníků. Výsledkem je skóre 0–100 (vyšší = rizikovější), úroveň low / medium / high, seznam zjištění se závažností info / warning / danger a přehled pozitivních zjištění.

Parametry

NázevUmístěníTypPopis
vin povinný cesta string VIN vozidla (17 znaků).

Ukázka požadavku

curl -s "https://kontrola-stk.cz/api/v1/vehicles/TMBHG41U942882738/risk" \
  -H "Authorization: Bearer $KSTK_API_KEY"

Ukázka odpovědi

200 application/json
{
    "data": {
        "vin": "TMBHG41U942882738",
        "score": 45,
        "level": "high",
        "flags": [
            {
                "code": "serious_defects",
                "severity": "warning",
                "title": "Vážné závady v historii",
                "detail": "4 vážné závady (kategorie B), naposledy 11.03.2026: Nepovolená úprava světlometu; U vozidel s OBD sdělovač MI (MIL) se po zapnutí zapalování…."
            },
            {
                "code": "frequent_owner_changes",
                "severity": "warning",
                "title": "Časté změny vlastníka",
                "detail": "8 vlastníků v registru, z toho 5 za posledních 5 let; průměrná doba držení 2,8 roku."
            },
            {
                "code": "short_current_ownership",
                "severity": "warning",
                "title": "Současný vlastník má vozidlo krátce",
                "detail": "Současný vlastník je zapsán teprve od 29.04.2026 (méně než 6 měsíců)."
            },
            {
                "code": "odometer_inconsistency",
                "severity": "info",
                "title": "Nesrovnalost v zápisu tachometru",
                "detail": "Při prohlídce 25.01.2016 je zapsán stav, který neodpovídá okolním záznamům (pravděpodobně chyba zápisu na stanici STK)."
            }
        ],
        "positives": [
            "Bez podezření na stočení tachometru (14 záznamů)",
            "Platná STK do 11.03.2028",
            "Žádná neúspěšná technická kontrola",
            "Vozidlo pochází z českého trhu (bez dovozu)"
        ]
    },
    "meta": {
        "request_id": "req_4f1c2a9be07d3a51c6e2",
        "generated_at": "2026-10-09T14:32:05+02:00"
    }
}

Hodnocení je orientační a nenahrazuje fyzickou prohlídku vozidla. Seznam kódů zjištění se může rozšiřovat – neznámé kódy proto ve své aplikaci zpracujte obecně podle severity.

GET /v1/plates/{spz}

Převod SPZ na VIN

Najde vozidlo podle registrační značky a vrátí jeho VIN se základními údaji. Mezery a pomlčky ve značce se ignorují. Pro API neplatí hodinový limit webového převodu – požadavky se počítají do limitů API.

Funkčnost převodu SPZ na VIN není garantována. Endpoint je poskytován „tak, jak je“, bez záruky dostupnosti, funkčnosti a správnosti výsledků, a může být kdykoliv bez upozornění omezen nebo ukončen. Provozovatel za jeho funkčnost neručí (viz VOP čl. 4.8 písm. f)). Nestavte na něm kritické procesy a vždy počítejte s chybou 404 nebo 502.

Parametry

NázevUmístěníTypPopis
spz povinný cesta string Registrační značka, 5–10 znaků (např. 4T81234 nebo 4T8 1234).

Ukázka požadavku

curl -s "https://kontrola-stk.cz/api/v1/plates/4T81234" \
  -H "Authorization: Bearer $KSTK_API_KEY"

Ukázka odpovědi

200 application/json
{
    "data": {
        "plate": "4T81234",
        "vin": "TMBHG41U942882738",
        "make": "ŠKODA",
        "model": "OCTAVIA",
        "category": "M1",
        "fuel": "NM",
        "color": "ŠEDÁ-METAL",
        "first_registration": "2004-01-22",
        "status": {
            "code": "registered",
            "label": "PROVOZOVANÉ"
        }
    },
    "meta": {
        "request_id": "req_4f1c2a9be07d3a51c6e2",
        "generated_at": "2026-10-09T14:32:05+02:00"
    }
}

Pro kompletní historii vozidla navažte voláním /vehicles/{vin} s vráceným VIN.

GET /v1/companies/{ico}/vehicles

Vozidla firmy podle IČO

Seznam vozidel, u kterých je nebo v minulosti byl subjekt s daným IČO zapsán jako vlastník či provozovatel. Příznak current označuje aktuální vztah, pole relations říká, zda jde o vlastnictví, provozování, nebo obojí. Aktuální vozidla jsou řazena první.

Parametry

NázevUmístěníTypPopis
ico povinný cesta string IČO subjektu (až 8 číslic, kratší se doplní nulami zleva).
status query string Filtr: all (výchozí), current – jen aktuální vozidla, historical – jen dřívější.

Ukázka požadavku

curl -s "https://kontrola-stk.cz/api/v1/companies/25596641/vehicles?status=current" \
  -H "Authorization: Bearer $KSTK_API_KEY"

Ukázka odpovědi

200 application/json
{
    "data": {
        "ico": "25596641",
        "total": 2,
        "current_count": 1,
        "historical_count": 1,
        "vehicles": [
            {
                "vin": "TMBDS23U939025601",
                "make": "ŠKODA",
                "model": "SUPERB",
                "category": "M1",
                "fuel": "NM",
                "color": "ŠEDÁ-METAL",
                "year": 2002,
                "first_registration": "2002-11-06",
                "status": {
                    "code": "registered",
                    "label": "PROVOZOVANÉ"
                },
                "current": true,
                "relations": [
                    "operator"
                ],
                "from": "2002-11-06",
                "to": null
            },
            {
                "vin": "WOL000031V7127033",
                "make": "OPEL",
                "model": "VECTRA CARAVAN",
                "category": "M1",
                "fuel": "BA 95 B",
                "color": "MODRÁ-TMAVÁ",
                "year": 1997,
                "first_registration": "1997-01-01",
                "status": {
                    "code": "terminated",
                    "label": "ZÁNIK"
                },
                "current": false,
                "relations": [
                    "operator"
                ],
                "from": "2002-02-01",
                "to": "2003-06-30"
            }
        ]
    },
    "meta": {
        "request_id": "req_4f1c2a9be07d3a51c6e2",
        "generated_at": "2026-10-09T14:32:05+02:00"
    }
}

Hodnoty total, current_count a historical_count se vztahují ke všem vozidlům firmy bez ohledu na filtr.

GET /v1/usage

Čerpání limitů

Aktuální čerpání denního a minutového limitu vašeho účtu, platnost tarifu Business a informace o klíči, kterým jste se autentizovali. Hodí se pro monitoring integrace.

Endpoint nemá žádné parametry.

Ukázka požadavku

curl -s "https://kontrola-stk.cz/api/v1/usage" \
  -H "Authorization: Bearer $KSTK_API_KEY"

Ukázka odpovědi

200 application/json
{
    "data": {
        "plan": "business",
        "subscription_valid_until": "2027-10-09T19:36:15+02:00",
        "daily": {
            "limit": 1000,
            "used": 128,
            "remaining": 872,
            "resets_at": "2026-10-10T00:00:00+02:00"
        },
        "minute": {
            "limit": 60,
            "used": 3,
            "remaining": 57
        },
        "key": {
            "id": 12,
            "name": "Skladový systém",
            "prefix": "kstk_3fa94c2",
            "created_at": "2026-09-01T10:15:00+02:00",
            "last_used_at": "2026-10-09T14:31:58+02:00"
        }
    },
    "meta": {
        "request_id": "req_4f1c2a9be07d3a51c6e2",
        "generated_at": "2026-10-09T14:32:05+02:00"
    }
}

I tento požadavek se započítává do limitů. Pro průběžnou kontrolu stačí číst hlavičky X-RateLimit-* z běžných odpovědí.

OpenAPI a testování

Kompletní strojově čitelný popis API ve formátu OpenAPI 3.1 (schémata všech odpovědí, chyby, ukázky) najdete na adrese:

https://kontrola-stk.cz/api/openapi.json
Vyzkoušejte API bez psaní kódu. Specifikaci naimportujte do Postmanu, Insomnie, Brunu nebo editoru Swagger (Import → URL), nastavte autorizaci Bearer Token na svůj klíč a posílejte požadavky přímo z aplikace. Ze specifikace si také můžete vygenerovat klienta pro svůj jazyk (např. nástrojem openapi-generator).

Verze a změny

Verze API je součástí adresy (/api/v1). V rámci verze v1 provádíme jen zpětně kompatibilní změny – přidání nových endpointů, volitelných parametrů nebo polí v odpovědi. Nekompatibilní změny vydáme jako novou verzi s předstihem a předchozí verzi ponecháme po přechodnou dobu v provozu.

v1.0.0říjen 2026
První veřejná verze API
  • Detail vozidla podle VIN s parametrem include.
  • Hodnocení rizik vozidla.
  • Převod SPZ na VIN a vozidla firmy podle IČO.
  • Endpoint /usage, hlavičky X-RateLimit-* a X-Request-Id.

Podmínky použití

  • Data pocházejí z Registru silničních vozidel a informačního systému stanic technické kontroly, které zveřejňuje Ministerstvo dopravy ČR. Za jejich úplnost a správnost neodpovídáme; údaje mohou být oproti registru zpožděné.
  • API slouží k vlastní podnikatelské činnosti držitele tarifu Business. Hromadné stahování a další prodej dat jako samostatné databáze není dovolen.
  • Platí zásada fair use – limity jsou nastaveny pro běžný provoz. Při zjevném zneužití (např. sdílení klíče s třetími stranami) můžeme klíč zneplatnit.
  • Osobní údaje fyzických osob API nevrací. Při zpracování dat dodržujte předpisy o ochraně osobních údajů (GDPR).
  • Užívání API se řídí všeobecnými obchodními podmínkami.
Připraveni začít? Vytvořte si API klíč a pošlete první požadavek během pár minut.