{"openapi":"3.1.0","info":{"title":"Karpata API","version":"1","summary":"Company data for SK · CZ · PL · RO from public registers.","description":"Legal-entity data from the public registers of Slovakia, Czechia, Poland and Romania.\n\n- **Authentication:** `Authorization: Bearer kp_live_…` (or `kp_test_…`).\n- **Provenance:** every record carries `provenance` (source attribution, licence, retrieval time). Show the attribution as given.\n- **Notice:** answers carry `notice`, the \"not an official register extract\" text in the language of `?lang=sk|en`. The data are informative only.\n- **Money** is a numeric string, never a float; in EUR unless the answer's `currency` says otherwise (financial statements stay in the filing's currency).\n- **Only company facts:** answers carry the data, its provenance and freshness (`checkedAt`, `retrievedAt`, `stale`) and the notice; nothing about our operations.\n- **Errors** look like `{ \"error\": { \"code\": \"…\", \"message\": \"…\" } }`.\n- **Limits** come from your plan: 429 `rate_limited` (per second, `Retry-After: 1`) or `daily_limit` (per day, `Retry-After` until midnight Europe/Bratislava).\n- **Watch:** `/v1/watch` manages your organization's watched companies (the same as the account page) within the plan's watch limits; no credits.\n- **Credits:** paid endpoints cost credits per the price list; usage is on your account page. A trial, or a plan with a hard cap, answers 402 `credits_exhausted` once its credits are used.\n- **MCP:** AI agents connect to `https://api.karpata.eu/v1/mcp` (Model Context Protocol, Streamable HTTP) with the same `Authorization` header; the tools are these routes, with the same plan, credits and limits.\n- **Tools:** client libraries for TypeScript, Python and PHP (https://karpata.eu/api-pre-firmy), a Postman collection at `/v1/postman.json` and the changelog at `/v1/changelog.json`.\n- **Sandbox:** a test key (`kp_test_…`, free for every registered company, account → API keys) reaches the same public routes but answers only made-up companies with `sandbox: true` and costs no credits: SK 99999901 (no risks), SK 99999902 (§81 and debts), SK 99999905 (dissolved), SK 99999909 (deleted, 410), CZ 99999903 (unreliable VAT payer), RO 99999904 (inactive taxpayer).","contact":{"name":"Karpata","url":"https://karpata.eu"}},"servers":[{"url":"https://api.karpata.eu"}],"security":[{"apiKey":[]}],"tags":[{"name":"Companies","description":"Search and the basic company card (free endpoints)."},{"name":"Risk","description":"VAT risk, tax and social debts, insolvency, the score (paid)."},{"name":"Financials","description":"Financial statements (paid; SK from RÚZ)."},{"name":"Sanctions","description":"The company screened against the EU and US OFAC sanctions lists (paid)."},{"name":"Check","description":"A partner checked against your own approval rules (or a template): ok / warn / stop with the rule that did not pass, the narrowed fraud signals and a verification record (paid)."},{"name":"KYB","description":"Verification of a legal entity as a customer or partner in one call, and name screening outside the index (paid; switched on per deployment)."},{"name":"Analytics","description":"Sector benchmark and change history (paid; the Analytika data package, Business plan)."},{"name":"Watch","description":"Watched companies of your organization: hourly comparison with the registers and lists, the changes (no credits; the plan's watch limits)."},{"name":"Usage","description":"Your organization's usage by month: requests, errors, credits and companies checked (no credits; Business plan)."},{"name":"Meta","description":"Health, this description, the Postman collection and the changelog."}],"paths":{"/v1/health":{"get":{"tags":["Meta"],"summary":"Liveness","operationId":"health","security":[],"responses":{"200":{"description":"The gateway is up. No database access.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true}},"required":["ok"]}}}}}}},"/v1/search":{"get":{"tags":["Companies"],"summary":"Search companies by name or identifier","operationId":"search","parameters":[{"name":"q","in":"query","required":true,"description":"Name or identifier, 1–100 characters. Never logged.","schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"country","in":"query","description":"Limit to one country, or several as a comma list (`SK,CZ`); empty = all countries switched on.","schema":{"type":"string"},"example":"SK,CZ"},{"name":"status","in":"query","description":"Comma-separated statuses, e.g. `active,in_liquidation`; empty = all.","schema":{"type":"string"},"example":"active"},{"name":"limit","in":"query","description":"Results to return; capped by the server's maximum.","schema":{"type":"integer","minimum":1}},{"$ref":"#/components/parameters/lang"}],"responses":{"200":{"description":"Matching companies, best first.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchResponse"}}}},"400":{"description":"Bad parameters: `bad_query`, `bad_country`, `bad_status`, `bad_limit`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"description":"`country_not_available`: the country is not switched on yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/Internal"}}}},"/v1/companies/{cc}/{regNo}":{"get":{"tags":["Companies"],"summary":"Basic company card","description":"The register card of the legal entity with its provenance and notice. Where the register publishes it (SK; RO without shareholders), also the structure of the company without names: how many members the statutory body and the shareholders have and how many of them are legal entities (`bodies`), the legal entities among them and the companies where this company is one (`relations`), and the registration in the SK public-sector partners register (`rpvs`, without beneficial owners). RO: the authorised CAEN activities (`authorisedActivities`), and for plans with that field the public contracts won (`publicContracts`). Free. PL (when Poland is switched on): no index; the card is read live from the KRS Open API (register P) for the one company asked, `regNo` = KRS number or NIP; only the basic fields, no structure, no people, nothing stored.","operationId":"getCompany","parameters":[{"$ref":"#/components/parameters/cc"},{"$ref":"#/components/parameters/regNo"},{"$ref":"#/components/parameters/lang"}],"responses":{"200":{"description":"The basic card with provenance and notice.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyCardResponse"}}}},"400":{"description":"Bad parameters: `bad_country`, `bad_reg_no`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"description":"`not_found` (no such company in the index), `country_not_available` (the country is not switched on yet) or `no_route`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"`gone`: the company was removed from the source register. We mirror deletions.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Error"},{"type":"object","properties":{"error":{"type":"object","properties":{"deletedAt":{"type":["string","null"],"format":"date-time"}}}}}]}}}},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/Internal"}}}},"/v1/companies/{cc}/{regNo}/vat":{"get":{"tags":["Risk"],"summary":"VAT risk","description":"SK (Finančná správa lists): the §81 VAT deregistration risk, the VAT registration (IČ DPH, date, type incl. §4b VAT group), VAT on a cash basis (§68d) and the bank accounts the VAT payer published. CZ: §109 unreliable VAT payer and the bank accounts the VAT payer published, both from one live ADIS call on every request. PL (when Poland is switched on): the MF white list live by NIP (`regNo` = NIP), at `date` and with `account` checked against the published accounts; legal entities (with a KRS number) only, the MF `requestId` in `details`.\n\nEvery answer is stored as a **verification record** (`record`): its id, time and the SHA-256 of what was served. Keep it as proof of what was checked and when; read it back with `/v1/records/{id}`. It is not an official register extract.\n\nPaid endpoint: open to keys whose plan includes it (see https://karpata.eu/cennik); otherwise 403 `plan_required`, or 403 `package_required` with `package` and `plan` when the plan lacks this endpoint's data package. Fields of data packages the plan does not include are left out and named in `locked` (`field`, `package`, `plan`). Costs credits (a repeat for the same company within the free window costs none); when a capped plan or a trial has used its credits, 402 `credits_exhausted`.","operationId":"getVatRisk","parameters":[{"$ref":"#/components/parameters/cc"},{"$ref":"#/components/parameters/regNo"},{"$ref":"#/components/parameters/lang"},{"name":"date","in":"query","required":false,"description":"PL only: the day to check (YYYY-MM-DD), today by default, at most five years back.","schema":{"type":"string","format":"date"}},{"name":"account","in":"query","required":false,"description":"PL only: a bank account (NRB, 26 digits) to check against the NIP's published accounts at `date` (`pl_vat_account`).","schema":{"type":"string"}}],"responses":{"200":{"description":"Checks for the company.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VatResponse"}}}},"400":{"description":"Bad parameters: `bad_country`, `bad_reg_no`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"description":"`not_found` (no such company in the index), `country_not_available` (the country is not switched on yet) or `no_route`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"`gone`: the company was removed from the source register. We mirror deletions.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Error"},{"type":"object","properties":{"error":{"type":"object","properties":{"deletedAt":{"type":["string","null"],"format":"date-time"}}}}}]}}}},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/Internal"}}}},"/v1/companies/{cc}/{regNo}/risk":{"get":{"tags":["Risk"],"summary":"Debts, tax reliability and score","description":"SK: tax debtors, social-insurance debtors, the FS tax reliability index, corporate income tax for recent periods, live checks at the health insurers VšZP and Dôvera and live REPLIK insolvency proceedings, plus a rule-based score (not a credit rating). CZ: live ISIR insolvency proceedings and the score from the facts Czechia publishes (tax, social and health debtor lists are not published there: `score.notPublished`). RO: the score from the ONRC card, live ANAF (inactive taxpayer, VAT registration) and the ANAF `bilant` indicators; the VAT checks themselves are in `/vat`. A list not confirmed recently answers `unavailable` (`list_stale`), never a stale \"not listed\".\n\nPaid endpoint: open to keys whose plan includes it (see https://karpata.eu/cennik); otherwise 403 `plan_required`, or 403 `package_required` with `package` and `plan` when the plan lacks this endpoint's data package. Fields of data packages the plan does not include are left out and named in `locked` (`field`, `package`, `plan`). Costs credits (a repeat for the same company within the free window costs none); when a capped plan or a trial has used its credits, 402 `credits_exhausted`.","operationId":"getRisk","parameters":[{"$ref":"#/components/parameters/cc"},{"$ref":"#/components/parameters/regNo"},{"$ref":"#/components/parameters/lang"}],"responses":{"200":{"description":"Checks, company status and score.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskResponse"}}}},"400":{"description":"Bad parameters: `bad_country`, `bad_reg_no`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"description":"`not_found` (no such company in the index), `country_not_available` (the country is not switched on yet) or `no_route`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"`gone`: the company was removed from the source register. We mirror deletions.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Error"},{"type":"object","properties":{"error":{"type":"object","properties":{"deletedAt":{"type":["string","null"],"format":"date-time"}}}}}]}}}},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/Internal"}}}},"/v1/companies/{cc}/{regNo}/financials":{"get":{"tags":["Financials"],"summary":"Financial statements","description":"SK: the last 5 ordinary statements from the register of financial statements (RÚZ), newest first, with ratios and EBITDA (computed: operating profit + depreciation); cached for a day. CZ: balance sheets from the statements filed through the tax office as XML in the Sbírka listin (or.justice.cz), amounts in whole CZK (never converted), no income statement for small companies (`revenue` null); years filed only as PDF are read in the background (text PDFs by rules, scans by AI when requested) and served with `extraction` (`method` `pdf_text` or `ai`, a `confidence`, the source document): machine-extracted, not a register extract; years still without figures are in `documentOnlyYears`, their state in `pdf`; cached for a week. PL: `available: false` with `filings`, the statements filed with KRS (live). Other countries: `available: false`.\n\nPaid endpoint: open to keys whose plan includes it (see https://karpata.eu/cennik); otherwise 403 `plan_required`, or 403 `package_required` with `package` and `plan` when the plan lacks this endpoint's data package. Fields of data packages the plan does not include are left out and named in `locked` (`field`, `package`, `plan`). Costs credits (a repeat for the same company within the free window costs none); when a capped plan or a trial has used its credits, 402 `credits_exhausted`.","operationId":"getFinancials","parameters":[{"$ref":"#/components/parameters/cc"},{"$ref":"#/components/parameters/regNo"},{"$ref":"#/components/parameters/lang"}],"responses":{"200":{"description":"Statements, or `available: false` outside SK, CZ and RO.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialsResponse"}}}},"400":{"description":"Bad parameters: `bad_country`, `bad_reg_no`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"description":"`not_found` (no such company in the index), `country_not_available` (the country is not switched on yet) or `no_route`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"`gone`: the company was removed from the source register. We mirror deletions.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Error"},{"type":"object","properties":{"error":{"type":"object","properties":{"deletedAt":{"type":["string","null"],"format":"date-time"}}}}}]}}}},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/Internal"},"503":{"description":"`source_unavailable`: RÚZ (SK), the Sbírka listin (CZ) or ANAF (RO) did not answer and nothing is cached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/companies/{cc}/{regNo}/history":{"get":{"tags":["Analytics"],"summary":"Change history","description":"What changed at the company, newest first: changes of the name, legal form, status, seat, main NACE, VAT payer flag and dissolution date, and the company listed on or removed from a public list, recorded from `since`; before that only what the registers date: founded, dissolved and the listing date of current entries (`recorded: false`). Legal-entity data only. A history item is what was true on its date; check the current status live with `/vat` and `/risk`. List events of a data package the plan lacks are left out and named in `locked`.\n\nPaid endpoint: open to keys whose plan includes it (see https://karpata.eu/cennik); otherwise 403 `plan_required`, or 403 `package_required` with `package` and `plan` when the plan lacks this endpoint's data package. Fields of data packages the plan does not include are left out and named in `locked` (`field`, `package`, `plan`). Costs credits (a repeat for the same company within the free window costs none); when a capped plan or a trial has used its credits, 402 `credits_exhausted`.","operationId":"getHistory","parameters":[{"$ref":"#/components/parameters/cc"},{"$ref":"#/components/parameters/regNo"},{"$ref":"#/components/parameters/lang"}],"responses":{"200":{"description":"The company's history.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HistoryResponse"}}}},"400":{"description":"Bad parameters: `bad_country`, `bad_reg_no`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"description":"`not_found` (no such company in the index), `country_not_available` (the country is not switched on yet) or `no_route`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"`gone`: the company was removed from the source register. We mirror deletions.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Error"},{"type":"object","properties":{"error":{"type":"object","properties":{"deletedAt":{"type":["string","null"],"format":"date-time"}}}}}]}}}},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/Internal"}}}},"/v1/vies/{vatId}":{"get":{"tags":["Risk"],"summary":"EU VAT ID check (VIES)","description":"Checks a VAT ID of any EU member state live in the European Commission's VIES: `valid`, the request time and, when your organization's own VAT ID is confirmed in your account's billing details, VIES's `consultationNumber`. With `?name=` VIES says whether the name matches its record (`nameMatch`: `match`, `no_match`, `not_processed`). The name and address VIES holds are never returned, as they may be a natural person's. A member state that does not answer gives 503 `source_unavailable`, never \"invalid\". Every answer is stored as a **verification record** (`record`, kind `vies`). Not an official confirmation.\n\nPaid endpoint: open to keys whose plan includes it (see https://karpata.eu/cennik); otherwise 403 `plan_required`, or 403 `package_required` with `package` and `plan` when the plan lacks this endpoint's data package. Fields of data packages the plan does not include are left out and named in `locked` (`field`, `package`, `plan`). Costs credits (a repeat for the same company within the free window costs none); when a capped plan or a trial has used its credits, 402 `credits_exhausted`.","operationId":"checkEuVat","parameters":[{"name":"vatId","in":"path","required":true,"schema":{"type":"string"},"description":"Country code and number, e.g. `DE123456789`; `EL` for Greece, `XI` for Northern Ireland."},{"name":"name","in":"query","required":false,"schema":{"type":"string","maxLength":200},"description":"The partner's name as you have it."}],"responses":{"200":{"description":"The VIES answer with its record.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"`bad_vat_id`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/Internal"},"503":{"description":"`source_unavailable`: VIES or the member state did not answer; try again later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/batch":{"post":{"tags":["Risk"],"summary":"Bulk check (queued)","description":"Queues `/vat`, `/risk` or `/kyb` for many companies at once; poll `GET /v1/batch/{id}` for the results (processed every few minutes, the live sources are rate-limited). At most your plan's `batch_max` items; duplicates (the same company, date and account) are removed. Submitting is free; every processed item costs its check's credits. Not available to test keys.","operationId":"createBatch","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["check","items"],"properties":{"check":{"type":"string","enum":["vat","risk","check","kyb"],"description":"`kyb` only while KYB is switched on. `check`: the partner against your rules (`policy`), each item gets `verdict` and `reasons`."},"policy":{"type":"string","description":"`check` only: the id of your rules or a template code (`carrier`, `customer`, `supplier`); default = your default rules. Fixed when the job is created."},"items":{"type":"array","items":{"type":"object","properties":{"country":{"$ref":"#/components/schemas/Country"},"regNo":{"type":"string"},"date":{"type":"string","format":"date","description":"`vat` and `check`: the payment date, passed as `?date=` (PL /vat) and kept in the verification record."},"account":{"type":"string","description":"`vat` and `check`: the payee's account, passed as `?account=` and kept in the verification record."},"vatId":{"type":"string","description":"`vat` only, instead of `country` and `regNo`: a VAT ID of another EU state, checked in VIES like `GET /v1/vies/{vatId}`."}}}}}}}}},"responses":{"202":{"description":"Queued.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string"},"total":{"type":"integer"}}}}}},"400":{"description":"`bad_check`, `bad_items`, `batch_empty`, `batch_too_large` (with `max`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"description":"`batch_open_jobs`: too many unfinished batches; or the request limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"$ref":"#/components/responses/Internal"}}}},"/v1/batch/{id}":{"get":{"tags":["Risk"],"summary":"Bulk check results","description":"The batch's status (`queued`, `running`, `done`) and every item's result: `answer` is what the single endpoint answers, or its `error` with `httpStatus`.","operationId":"getBatch","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"The batch.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"`not_found`: no batch with this id for your key's client.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"$ref":"#/components/responses/Internal"}}}},"/v1/records/{id}":{"get":{"tags":["Risk"],"summary":"Verification record","description":"A stored `/vat` answer of your organization, with `verified`: whether its content still gives its SHA-256. Free (no credits).","operationId":"getRecord","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"The record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"description":"`not_found`: no record with this id for your organization.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"$ref":"#/components/responses/Internal"}}}},"/v1/companies/{cc}/{regNo}/sanctions":{"get":{"tags":["Sanctions"],"summary":"Sanctions lists","description":"The company itself screened against the EU consolidated list of financial sanctions (which includes every UN Security Council listing) and the US OFAC SDN list, legal entities only. `listed`: an entry carries this company's identifier; `possible_match`: the name without its legal form equals a listed name or alias, to be reviewed; `not_listed`: neither. Owners and controllers (the 50 % rule), natural persons and other lists are not covered (`coverage`). The answer is information for your own due diligence, not a decision. A list not confirmed recently answers `unavailable` (`list_stale`), never a stale \"not listed\".\n\nPaid endpoint: open to keys whose plan includes it (see https://karpata.eu/cennik); otherwise 403 `plan_required`, or 403 `package_required` with `package` and `plan` when the plan lacks this endpoint's data package. Fields of data packages the plan does not include are left out and named in `locked` (`field`, `package`, `plan`). Costs credits (a repeat for the same company within the free window costs none); when a capped plan or a trial has used its credits, 402 `credits_exhausted`.","operationId":"getSanctions","parameters":[{"$ref":"#/components/parameters/cc"},{"$ref":"#/components/parameters/regNo"},{"$ref":"#/components/parameters/lang"}],"responses":{"200":{"description":"One check per list, with the matches.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SanctionsResponse"}}}},"400":{"description":"Bad parameters: `bad_country`, `bad_reg_no`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"description":"`not_found` (no such company in the index), `country_not_available` (the country is not switched on yet) or `no_route`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"`gone`: the company was removed from the source register. We mirror deletions.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Error"},{"type":"object","properties":{"error":{"type":"object","properties":{"deletedAt":{"type":["string","null"],"format":"date-time"}}}}}]}}}},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/Internal"}}}},"/v1/companies/{cc}/{regNo}/check":{"get":{"tags":["Check"],"summary":"Check a partner against your rules","description":"The partner against your organization's approval rules (`policy`; without it your default rules, or the `carrier` template): each rule with its `action` (`stop` / `warn`) and `outcome` (`pass`, `fail` with the deciding `fact`, `unavailable`, `locked` when the fact is in a data package your plan lacks, `not_applicable`). `result.verdict`: `stop` when a stop rule failed, `warn` when a warn rule failed or a stop rule could not be said, else `ok`. The rules are yours; Karpata gives the facts and is never an approval or a rating. Reads only what the rules need (VAT checks live, the sanctions lists, `/risk` checks with the Riziká package, no score). `signals`: the company's age, the latest recorded change of its seat, name and (SK) published accounts, and how many other companies share its seat (a count only). SK, CZ, PL and RO.\n\n**PL:** `regNo` is the KRS number or the NIP (a NIP without a KRS number is a sole trader: 404 `not_served`). The VAT rules (`vat_payer`, `no_vat_risk`, `account_published`) read one live answer of the MF white list at `date`, with its `requestId` in the record; the white list allows 100 searches a day for all customers, so when they are used up those rules are `unavailable` with `reason: daily_limit`. Debts from section 4 of the live KRS extract, bankruptcy from section 6.\n\nEvery answer is stored as a **verification record** (`record`, kind `check`). Not an official register extract.\n\nPaid endpoint: open to keys whose plan includes it (see https://karpata.eu/cennik); otherwise 403 `plan_required`, or 403 `package_required` with `package` and `plan` when the plan lacks this endpoint's data package. Fields of data packages the plan does not include are left out and named in `locked` (`field`, `package`, `plan`). Costs credits (a repeat for the same company within the free window costs none); when a capped plan or a trial has used its credits, 402 `credits_exhausted`.","operationId":"checkPartner","parameters":[{"$ref":"#/components/parameters/cc"},{"$ref":"#/components/parameters/regNo"},{"$ref":"#/components/parameters/lang"},{"name":"policy","in":"query","required":false,"schema":{"type":"string"},"description":"The id of your rules (Account → Rules) or a template code: `carrier`, `customer`, `supplier`."},{"name":"account","in":"query","required":false,"schema":{"type":"string"},"description":"The account you are about to pay (IBAN; SK and CZ also the domestic form; PL the NRB or a PL IBAN); rule `account_published`."},{"name":"date","in":"query","required":false,"schema":{"type":"string","format":"date"},"description":"The payment or invoice date, kept in the record (the checks are live). PL: the white list answers at this date (up to five years back)."}],"responses":{"200":{"description":"The rules with their outcomes, the verdict, the signals and the record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckResponse"}}}},"400":{"description":"Bad parameters: `bad_country`, `bad_reg_no`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"description":"`not_found` (no such company in the index), `country_not_available` (the country is not switched on yet) or `no_route`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"`gone`: the company was removed from the source register. We mirror deletions.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Error"},{"type":"object","properties":{"error":{"type":"object","properties":{"deletedAt":{"type":["string","null"],"format":"date-time"}}}}}]}}}},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/Internal"}}}},"/v1/companies/{cc}/{regNo}/kyb":{"get":{"tags":["KYB"],"summary":"Verify a legal entity (KYB)","description":"One answer for customer due diligence on a legal entity: `company` (the register card: identification), `verification` (it exists in the register, its status, the register source and time), the `/vat` checks of the country (live where the country's are live), the EU and OFAC sanctions lists (legal entities only), and `summary.verdict`: `clear` (every check answered, no signal), `review` (a sanctions match, §81 / §109 / inactive, or the company is not active; the reasons are listed) or `unavailable` (no signal, but a check did not answer). Never approved / rejected: the decision is yours. `coverage` says what it does not cover (representatives, beneficial owners, politically exposed persons, identity documents). PL has no index, so no `/kyb` there.\n\nEvery answer is stored as a **verification record** (`record`, kind `kyb`), readable with `/v1/records/{id}`. Not an official register extract.\n\nPaid endpoint: open to keys whose plan includes it (see https://karpata.eu/cennik); otherwise 403 `plan_required`, or 403 `package_required` with `package` and `plan` when the plan lacks this endpoint's data package. Fields of data packages the plan does not include are left out and named in `locked` (`field`, `package`, `plan`). Costs credits (a repeat for the same company within the free window costs none); when a capped plan or a trial has used its credits, 402 `credits_exhausted`.","operationId":"verifyCompany","parameters":[{"$ref":"#/components/parameters/cc"},{"$ref":"#/components/parameters/regNo"},{"$ref":"#/components/parameters/lang"}],"responses":{"200":{"description":"The verification with its verdict and record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KybResponse"}}}},"400":{"description":"Bad parameters: `bad_country`, `bad_reg_no`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"description":"`not_found` (no such company in the index), `country_not_available` (the country is not switched on yet) or `no_route`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"`gone`: the company was removed from the source register. We mirror deletions.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Error"},{"type":"object","properties":{"error":{"type":"object","properties":{"deletedAt":{"type":["string","null"],"format":"date-time"}}}}}]}}}},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/Internal"}}}},"/v1/screen":{"post":{"tags":["KYB"],"summary":"Screen a name (sanctions lists)","description":"Screens a company name outside the Karpata index (a counterparty from any country) against the EU consolidated list of financial sanctions and the US OFAC SDN list, legal entities only: `possible_match` when the name without its legal form equals a listed name or alias, `listed` when an identifier matches (identifiers are matched for SK, CZ, PL and RO only). A possible match is a lead for your review, not a verdict; `no match` is not a clearance. Stored as a verification record (kind `screen`). Compliance data package.\n\nPaid endpoint: open to keys whose plan includes it (see https://karpata.eu/cennik); otherwise 403 `plan_required`, or 403 `package_required` with `package` and `plan` when the plan lacks this endpoint's data package. Fields of data packages the plan does not include are left out and named in `locked` (`field`, `package`, `plan`). Costs credits (a repeat for the same company within the free window costs none); when a capped plan or a trial has used its credits, 402 `credits_exhausted`.","operationId":"screenName","parameters":[{"$ref":"#/components/parameters/lang"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","minLength":2,"maxLength":200,"description":"The company name as you know it."},"country":{"type":"string","pattern":"^[A-Za-z]{2}$","description":"Optional ISO 3166-1 alpha-2 country of the company."},"identifiers":{"type":"array","maxItems":10,"items":{"type":"string","maxLength":32},"description":"Optional registration, tax or VAT numbers; matched with `country` for SK, CZ, PL and RO."}}}}}},"responses":{"200":{"description":"One check per list, the verdict and the record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenResponse"}}}},"400":{"description":"`bad_json`, `bad_name`, `bad_country`, `bad_identifiers`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"description":"`no_route`: KYB is not switched on.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"`too_large`: the body is over 16 KB.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/Internal"}}}},"/v1/watch":{"get":{"tags":["Watch"],"summary":"Watched companies","description":"Your organization's watched companies (the same as the account page): the plan's limits (`limit`, `liveLimit`) and use, every company with its current `state` (register status, the lists it is on) and `provenance`, and the last 200 `events` (changes) detected since watching started, newest first. Companies over the limit after a downgrade are `paused` and have no state. An event says what was detected and when; check `/vat` or `/risk` live before a payment. Free (no credits). Not available to test keys.","operationId":"listWatched","parameters":[{"$ref":"#/components/parameters/lang"}],"responses":{"200":{"description":"The watched companies and their changes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/Internal"}}}},"/v1/usage":{"get":{"tags":["Usage"],"summary":"Usage by month","description":"Your organization's usage by month, the same numbers as the account's Usage page: requests, errors, credits and companies checked, each month by channel (`web`, `api`, `batch`, `mcp`) and by endpoint and country. Closed months come from the monthly summaries, the current month is live. As far back as the plan keeps history (`historyMonths`); `companies` is null for a month whose detail rows are gone. Free (no credits). Business plan (`plan_required` otherwise); not available to test keys.","operationId":"getUsage","parameters":[{"name":"months","in":"query","required":false,"description":"How many months back, newest first (1–60, default 13; at most the plan's history).","schema":{"type":"integer","minimum":1,"maximum":60,"default":13}}],"responses":{"200":{"description":"The usage by month.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageResponse"}}}},"400":{"description":"`bad_months`: months is not a whole number from 1 to 60.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"`plan_required` (the plan has no usage API; Business), `forbidden` (test or internal key), or as for every route.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/Internal"}}}},"/v1/watch/{cc}/{regNo}":{"get":{"tags":["Watch"],"summary":"Watch status of a company","description":"Whether your organization watches this company, and the plan's watch limits and use. Free.","operationId":"getWatch","parameters":[{"$ref":"#/components/parameters/cc"},{"$ref":"#/components/parameters/regNo"}],"responses":{"200":{"description":"The watch status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchStatus"}}}},"400":{"description":"Bad parameters: `bad_country`, `bad_reg_no`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"`plan_required` (the plan has no watched companies; watching only), `forbidden` (test or internal key), or as for every route.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/Internal"}}},"post":{"tags":["Watch"],"summary":"Watch a company","description":"Starts watching the company: it is compared with the registers and lists every hour and its changes appear in `GET /v1/watch` (and in webhooks and e-mails). Idempotent. Only companies in the index (legal entities). Needs a plan with watched companies; at the plan's `watched_companies` answers 409 `watch_limit`. Free (no credits).","operationId":"watchCompany","parameters":[{"$ref":"#/components/parameters/cc"},{"$ref":"#/components/parameters/regNo"}],"responses":{"200":{"description":"Watched.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchStatus"}}}},"400":{"description":"Bad parameters: `bad_country`, `bad_reg_no`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"`plan_required` (the plan has no watched companies; watching only), `forbidden` (test or internal key), or as for every route.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"`not_found`: the company is not in the index.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"`watch_limit`: the plan's number of watched companies is reached (`limit`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/Internal"}}},"delete":{"tags":["Watch"],"summary":"Stop watching a company","description":"Stops watching the company. Idempotent. Free.","operationId":"unwatchCompany","parameters":[{"$ref":"#/components/parameters/cc"},{"$ref":"#/components/parameters/regNo"}],"responses":{"200":{"description":"Not watched.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchStatus"}}}},"400":{"description":"Bad parameters: `bad_country`, `bad_reg_no`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"`plan_required` (the plan has no watched companies; watching only), `forbidden` (test or internal key), or as for every route.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/Internal"}}}},"/v1/openapi.json":{"get":{"tags":["Meta"],"summary":"This OpenAPI description","operationId":"openapi","security":[],"responses":{"200":{"description":"OpenAPI 3.1 document.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/postman.json":{"get":{"tags":["Meta"],"summary":"Postman collection","description":"Postman collection v2.1 built from this description; set its `apiKey` variable to your key.","operationId":"postman","security":[],"responses":{"200":{"description":"Postman collection v2.1.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/changelog.json":{"get":{"tags":["Meta"],"summary":"API changelog","description":"Changes customers can see, newest first: `entries[]` with `date`, `kind` (added, changed, deprecated, removed, fixed), `change` and `routes`.","operationId":"changelog","security":[],"responses":{"200":{"description":"The changelog.","content":{"application/json":{"schema":{"type":"object"}}}}}}}},"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","bearerFormat":"kp_live_XXXXXXXX_<32 characters>","description":"Your API key."}},"parameters":{"cc":{"name":"cc","in":"path","required":true,"description":"Country code.","schema":{"$ref":"#/components/schemas/Country"}},"regNo":{"name":"regNo","in":"path","required":true,"description":"Registration number (SK/CZ IČO, PL KRS or REGON, RO CUI): 1–32 letters or digits.","schema":{"type":"string","pattern":"^[0-9A-Za-z ]{1,32}$"},"example":"47605405"},"lang":{"name":"lang","in":"query","description":"Language of `notice`.","schema":{"type":"string","enum":["en","sk","ro","cs"],"default":"en"}}},"responses":{"Unauthorized":{"description":"`unauthorized`: missing, malformed or unknown API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Forbidden":{"description":"`forbidden` (key revoked or expired, client suspended) `plan_required` (the plan has no API access) or `package_required` (the plan lacks this endpoint's data package; `package` and `plan` name it).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"TooManyRequests":{"description":"`rate_limited` or `daily_limit`.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Internal":{"description":"`internal`: unexpected error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"Country":{"type":"string","enum":["SK","CZ","PL","RO"]},"CompanyStatus":{"type":"string","enum":["active","in_liquidation","in_insolvency","dissolved"]},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"Provenance":{"type":"object","description":"Where a record comes from. Show `attribution` verbatim.","required":["sourceCode","attribution","licence","retrievedAt"],"properties":{"sourceCode":{"type":"string","example":"sk_rpo"},"attribution":{"type":"string","example":"Zdroj údajov: Štatistický úrad SR"},"licence":{"type":"string","description":"Licence of the snapshot; empty for live answers without a published licence.","example":"CC BY 4.0"},"retrievedAt":{"type":"string","format":"date-time"}}},"Notice":{"type":"string","description":"\"Not an official register extract\" text in the requested language."},"SearchResult":{"type":"object","required":["country","regNo","name","status","provenance"],"properties":{"country":{"$ref":"#/components/schemas/Country"},"regNo":{"type":"string"},"name":{"type":"string"},"legalFormCode":{"type":["string","null"]},"city":{"type":["string","null"]},"status":{"$ref":"#/components/schemas/CompanyStatus"},"establishedOn":{"type":["string","null"],"format":"date"},"terminatedOn":{"type":["string","null"],"format":"date"},"provenance":{"type":"array","items":{"$ref":"#/components/schemas/Provenance"}}}},"SearchResponse":{"type":"object","required":["results","notice"],"properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/SearchResult"}},"notice":{"$ref":"#/components/schemas/Notice"}}},"BodyCount":{"type":"object","properties":{"count":{"type":"integer","minimum":0},"legalEntities":{"type":"integer","minimum":0}},"required":["count","legalEntities"]},"CompanyRelation":{"type":"object","properties":{"kind":{"type":"string","enum":["statutory","stakeholder"]},"role":{"type":"string","description":"As the register publishes it.","example":"Spoločník"},"since":{"type":["string","null"],"format":"date"},"company":{"type":"object","description":"`regNo` null for a foreign legal entity known only by name.","properties":{"country":{"type":["string","null"]},"regNo":{"type":["string","null"]},"name":{"type":"string"}}}}},"CompanyCardResponse":{"type":"object","required":["country","regNo","name","legalForm","status","seat","provenance","notice"],"properties":{"country":{"$ref":"#/components/schemas/Country"},"regNo":{"type":"string"},"taxId":{"type":["string","null"]},"vatId":{"type":["string","null"]},"name":{"type":"string"},"legalForm":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}}},"status":{"$ref":"#/components/schemas/CompanyStatus"},"establishedOn":{"type":["string","null"],"format":"date"},"terminatedOn":{"type":["string","null"],"format":"date"},"seat":{"type":"object","properties":{"street":{"type":["string","null"]},"city":{"type":["string","null"]},"postalCode":{"type":["string","null"]}}},"naceMain":{"type":["string","null"],"description":"Main activity code as the register gives it, without dots (SK: SK NACE Rev. 2.1; CZ: CZ-NACE Rev. 2, section letter to 5-digit subclass; RO: ANAF CAEN, which mixes CAEN Rev. 1, 2 and 3).","example":"6210"},"naceActivity":{"type":"object","description":"The main activity's names from the official codebook served for the country (SK: ŠÚ SR SK NACE Rev. 2.1; CZ: ČSÚ CZ-NACE; RO: ONRC CAEN, only for codes that mean the same in every CAEN revision they exist in, with the SK / EN names of NACE Rev. 2.1 or the EN / CS names of CZ-NACE Rev. 2). Only when the code is in the codebook; `code` is the code the names belong to (a CZ 5-digit subclass without its own entry falls back to its 4-digit class). The codebooks are listed in `provenance`.","properties":{"scheme":{"type":"string","enum":["sk_nace_2_1","cz_nace_2","ro_nace_caen"]},"code":{"type":"string","example":"6210"},"names":{"type":"object","properties":{"sk":{"type":["string","null"],"example":"Počítačové programovanie"},"en":{"type":["string","null"],"example":"Computer programming activities"},"cs":{"type":["string","null"]},"ro":{"type":["string","null"],"description":"RO only: the ONRC CAEN title."}}}}},"tradeRegNo":{"type":"string","description":"RO only, when known: the ONRC registration number (Nr. Reg. Com.).","example":"J40/372/2002"},"vatPayer":{"oneOf":[{"type":"object","description":"VAT payer flag of the basic card; not a tax-risk verdict (see `/vat`).","properties":{"value":{"type":"boolean"},"checkedAt":{"type":"string","format":"date-time"}}},{"type":"null"}]},"register":{"type":"object","description":"CZ only, when the company has an entry in the public register (veřejný rejstřík): court and file number, date of entry, registered capital (amount as a numeric string), objects of business, and the newest insolvency entry type (a register record, not the live state; see `/risk`).","properties":{"court":{"type":["string","null"]},"fileNo":{"type":["string","null"],"example":"C 231666"},"registeredOn":{"type":["string","null"],"format":"date"},"capital":{"oneOf":[{"type":"object","properties":{"amount":{"type":"string","example":"200000"},"currency":{"type":"string","enum":["CZK","EUR"]}}},{"type":"null"}]},"activities":{"type":"array","items":{"type":"string"},"maxItems":30},"insolvencyRecord":{"oneOf":[{"type":"object","properties":{"recordedOn":{"type":["string","null"],"format":"date"},"entry":{"type":["string","null"]}}},{"type":"null"}]}}},"bodies":{"type":"object","description":"The current statutory body and shareholders, counted, without names; `legalEntities` = how many of them are legal entities. Only where the register publishes it; `stakeholders` is left out where the register does not publish shareholders (RO).","properties":{"statutory":{"$ref":"#/components/schemas/BodyCount"},"stakeholders":{"$ref":"#/components/schemas/BodyCount"}}},"relations":{"type":"object","description":"Legal entities only, current only: those in this company's statutory body or among its shareholders (`members`), and the companies where this company is one (`memberOf`, at most a limit, sorted by name; `relationsTotal` = all of them).","properties":{"members":{"type":"array","items":{"$ref":"#/components/schemas/CompanyRelation"}},"memberOf":{"type":"array","items":{"$ref":"#/components/schemas/CompanyRelation"}},"relationsTotal":{"type":"integer","minimum":0}}},"publicContracts":{"type":"object","description":"RO only, for keys whose plan includes the field `card.public_contracts` (otherwise named in `locked`): public contracts the company won, from the SEAP / SICAP exports of ADR on data.gov.ro for the last years (`since`–`until`). Contracts after a procedure and direct acquisitions; framework agreements are left out, their call-offs counted. Sums in RON as published, numeric strings. `last` is the latest award with its contracting authority.","properties":{"currency":{"type":"string","enum":["RON"]},"awards":{"type":"integer","minimum":1},"sumRon":{"type":"string","example":"1250340.50"},"since":{"type":"integer","example":2022},"until":{"type":"integer","example":2026},"byKind":{"type":"object","properties":{"contract":{"type":"object","properties":{"awards":{"type":"integer"},"sumRon":{"type":"string"}}},"direct":{"type":"object","properties":{"awards":{"type":"integer"},"sumRon":{"type":"string"}}}}},"byYear":{"type":"array","items":{"type":"object","properties":{"year":{"type":"integer"},"awards":{"type":"integer"},"sumRon":{"type":"string"}}}},"last":{"oneOf":[{"type":"object","properties":{"awardedOn":{"type":"string","format":"date"},"kind":{"type":"string","enum":["contract","direct"]},"valueRon":{"type":["string","null"]},"cpv":{"type":["string","null"]},"authority":{"type":"object","properties":{"name":{"type":["string","null"]},"cui":{"type":["string","null"]}}}}},{"type":"null"}]}}},"authorisedActivities":{"type":"object","description":"RO only, when ONRC open data list them: the CAEN activities the company is authorised for (OD_CAEN_AUTORIZAT). `count` = all of them; `items` = the first ones in code order (at most a limit set by Karpata), each with the CAEN version as ONRC publishes it.","properties":{"count":{"type":"integer","minimum":1},"items":{"type":"array","items":{"type":"object","required":["code","version"],"properties":{"code":{"type":"string","pattern":"^[0-9]{4}$","example":"4711"},"version":{"type":["string","null"]}}}}},"required":["count","items"]},"rpvs":{"type":"object","description":"SK only: registration in the public-sector partners register (RPVS), with a link to the partner's page there; no beneficial owners. Present only while the source is served.","properties":{"registered":{"type":"boolean"},"since":{"type":["string","null"],"format":"date"},"until":{"type":["string","null"],"format":"date"},"entryNo":{"type":["string","null"]},"url":{"type":"string","format":"uri"}},"required":["registered"]},"provenance":{"type":"array","items":{"$ref":"#/components/schemas/Provenance"},"minItems":1},"notice":{"$ref":"#/components/schemas/Notice"}}},"ListCheck":{"type":"object","description":"An answer from a published list (SK Finančná správa, Sociálna poisťovňa) or a register snapshot (RO ONRC insolvency status).","required":["check","status","listedOn","list","provenance"],"properties":{"check":{"type":"string","examples":["sk_vat_deregistration_risk","sk_vat_registered","sk_vat_cash_basis","sk_vat_accounts","sk_tax_debtors","sk_tax_reliability","sk_social_debtors","sk_state_claims","sk_income_tax","ro_taxpayer_category","ro_insolvency"]},"status":{"type":"string","enum":["listed","not_listed","unavailable"]},"reason":{"$ref":"#/components/schemas/UnavailableReason"},"listedOn":{"type":["string","null"],"format":"date"},"amount":{"type":["string","null"],"pattern":"^-?\\d+(\\.\\d+)?$","description":"Debt in EUR on a debtor list; null when not listed. `not_listed` does not mean no debt (lists have thresholds)."},"currency":{"type":["string","null"],"enum":["EUR",null]},"details":{"type":"object","additionalProperties":true,"description":"The list's own facts, e.g. `{ \"year\": 2025 }` (§81), `{ \"kind\": \"§4b\", \"payerFrom\": \"2014-02-01\" }` (VAT registration), `{ \"level\": \"high\" }` (reliability index), `{ \"to\": null }` (cash basis), `{ \"ibans\": [\"SK…\"] }` (accounts) or `{ \"periods\": [{ \"from\", \"to\", \"assessed\", \"additional\", \"loss\" }] }` (income tax, money as numeric strings). `ro_insolvency` (the company status in the ONRC open data, a snapshot about monthly): `{ \"asOf\": \"2026-10-19\", \"since\": { \"after\": \"2026-09-02\", \"on\": \"2026-10-19\" } | null, \"before\": \"2026-09-02\" | null }`: the status changed after `since.after` and by `since.on`, or the company was already in insolvency in the first snapshot read (`before`)."},"vatId":{"type":["string","null"],"description":"IČ DPH from the list entry (a VAT group shares one)."},"list":{"type":"object","properties":{"version":{"type":["string","null"],"format":"date"},"checkedAt":{"type":["string","null"],"format":"date-time"}}},"provenance":{"$ref":"#/components/schemas/Provenance"}}},"LiveCheck":{"type":"object","description":"An answer asked live at the source on this request (CZ ADIS, CZ ISIR, SK health insurers, SK REPLIK, RO ANAF).","required":["check","status","listedOn","checkedAt","provenance"],"properties":{"check":{"type":"string","enum":["cz_vat_unreliable","cz_vat_accounts","cz_insolvency","sk_health_vszp","sk_health_dovera","sk_insolvency","ro_vat_inactive","ro_vat_registered","ro_vat_accounts","ro_court_cases","pl_vat_status","pl_vat_account","pl_krs_debts","pl_krs_insolvency"]},"status":{"type":"string","enum":["unreliable","reliable","not_found","listed","not_listed","inactive","active","exempt","not_registered","unavailable"],"description":"ADIS: `unreliable`, `reliable`, `not_found`; insurers: `listed`, `not_listed`; REPLIK and ISIR: `listed` = an ongoing proceeding, `not_listed` = none ongoing; ADIS accounts: `listed` = at least one published account (`details.accounts`); ANAF inactive: `inactive`, `active`, `not_found`; ANAF VAT registration: `listed` (with `vatId`), `not_listed`; all: `unavailable` (with `reason`)."},"reason":{"$ref":"#/components/schemas/UnavailableReason"},"listedOn":{"type":["string","null"],"format":"date"},"vatId":{"type":"string","description":"ANAF VAT registration only: `RO` + CUI.","example":"RO14399840"},"amount":{"type":["string","null"],"pattern":"^-?\\d+(\\.\\d+)?$","description":"Insurers only: debt in EUR."},"currency":{"type":["string","null"],"enum":["EUR",null]},"proceedings":{"type":"array","description":"REPLIK and ISIR: every proceeding, newest first. No trustee or debtor names.","items":{"type":"object","properties":{"kind":{"type":"string","enum":["bankruptcy","restructuring","debtRelief","liquidation","preventive","other"]},"type":{"type":["string","null"]},"state":{"type":["string","null"]},"caseNumber":{"type":["string","null"]},"court":{"type":["string","null"]},"startedOn":{"type":["string","null"],"format":"date"},"endedOn":{"type":["string","null"],"format":"date"},"endReason":{"type":["string","null"]},"lastEvent":{"type":["string","null"]},"lastEventOn":{"type":["string","null"],"format":"date"},"ongoing":{"type":"boolean"},"url":{"type":["string","null"],"description":"ISIR only: the proceeding's public page."}}}},"details":{"type":"object","description":"ADIS accounts: `{ \"accounts\": [{ \"account\": \"27-5868650297/0100\" | \"CZ47…\", \"publishedOn\": \"2013-04-01\" }] }`, at most 50. ANAF inactive: `asOf`, `inactiveFrom`, `reactivatedOn`, `publishedOn`, `deletedOn`. ANAF VAT registration: `asOf`, `periods` (at most 10: `from`, `to`, `cancelledOn`, `reason`), `vatOnCollection`, `vatOnCollectionFrom`, `vatOnCollectionTo`, `splitVat`, `eInvoicing`, `registrationState`. RO court cases (`ro_court_cases`, portal.just.ro, by the company's name: `listed` = at least one case with the company as a party): `matching: \"name\"`, `total`, `byCategory`, `byRole`, `insolvency: { cases, debtorSince }` (Faliment cases with the company as debtor), `capped`, `cases` (newest first: `court`, `courtLevel`, `category`, `stage`, `role` of the company, `startedOn`, `modifiedOn`, `nextHearingOn`, `matchedBy`). No other party, case number, object or ruling; criminal and natural-person matters left out."},"checkedAt":{"type":"string","format":"date-time"},"provenance":{"$ref":"#/components/schemas/Provenance"}}},"UnavailableReason":{"type":"string","enum":["list_stale","not_found","not_served","daily_limit","source_unavailable"],"description":"Only with `status: unavailable`: `list_stale` (the list was not confirmed at the source recently), `not_found` (the source does not know the company, so no verdict), `not_served` (PL: the subject has no KRS number and may be a natural person; Karpata serves legal entities only), `daily_limit` (PL: the daily limit of the MF white list, shared by all customers, is used up; try again tomorrow), `source_unavailable` (the source did not answer in time or answered with an error; try again later)."},"Check":{"oneOf":[{"$ref":"#/components/schemas/ListCheck"},{"$ref":"#/components/schemas/LiveCheck"}]},"SanctionCheck":{"type":"object","required":["check","status","matches","list","provenance"],"properties":{"check":{"type":"string","examples":["eu_sanctions","us_ofac_sdn"]},"status":{"type":"string","enum":["listed","possible_match","not_listed","unavailable"]},"reason":{"type":"string","enum":["list_stale"]},"matches":{"type":"array","description":"Identifier matches first; at most a configured number per list. No remarks, addresses or persons.","items":{"type":"object","required":["ref","name","matchedOn"],"properties":{"ref":{"type":"string","description":"The entry's id on the list (EU logicalId, OFAC ent_num)."},"name":{"type":"string","description":"The listed entity's primary name."},"matchedOn":{"type":"string","enum":["identifier","name"]},"programmes":{"type":"array","items":{"type":"string"},"examples":[["RUS"],["RUSSIA-EO14024"]]},"listedOn":{"type":["string","null"],"format":"date","description":"EU: first publication; OFAC: null."},"details":{"type":"object","additionalProperties":{"type":"string"},"description":"EU: `euReferenceNumber`, `unReferenceNumber`, `regulation`."}}}},"list":{"type":"object","properties":{"version":{"type":["string","null"],"description":"The list version as published (UTC)."},"checkedAt":{"type":["string","null"],"format":"date-time"}}},"provenance":{"$ref":"#/components/schemas/Provenance"}}},"KybSummary":{"type":"object","required":["verdict","reasons"],"properties":{"verdict":{"type":"string","enum":["clear","review","unavailable"],"description":"`clear`: every check answered and none is a signal. `review`: at least one signal; see `reasons`. `unavailable`: no signal, but a check did not answer."},"reasons":{"type":"array","items":{"type":"string"},"description":"`<check>:<status>` per signal, or `company:<status>` when the company is not active.","examples":[["eu_sanctions:possible_match"],["company:in_liquidation","sk_vat_deregistration_risk:listed"]]}}},"CheckResponse":{"type":"object","required":["country","regNo","company","policy","result","signals","checks","notice"],"properties":{"country":{"$ref":"#/components/schemas/Country"},"regNo":{"type":"string"},"company":{"type":"object","properties":{"name":{"type":"string"},"status":{"type":["string","null"]},"establishedOn":{"type":["string","null"],"format":"date"},"vatPayer":{"type":["boolean","null"]},"vatStatus":{"type":["string","null"],"enum":["active","exempt","not_registered",null],"description":"PL only: the status on the MF white list (`exempt` = Zwolniony, a VAT payer exempt from VAT, passes `vat_payer`)."}}},"policy":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"source":{"type":"string","enum":["organization","template"]}}},"result":{"type":"object","required":["verdict","rules"],"properties":{"verdict":{"type":"string","enum":["ok","warn","stop"]},"rules":{"type":"array","items":{"type":"object","required":["rule","action","outcome"],"properties":{"rule":{"type":"string","enum":["active","min_age_months","vat_payer","no_vat_risk","account_published","no_sanctions","no_debts","no_insolvency","no_recent_seat_change","no_recent_name_change","no_recent_account_change","max_companies_at_address"]},"value":{"type":"integer","description":"Months, days or a number of companies, for the rules that take one."},"action":{"type":"string","enum":["stop","warn"]},"outcome":{"type":"string","enum":["pass","fail","unavailable","locked","not_applicable"]},"fact":{"type":"object","description":"On `fail`: the fact that decided, e.g. `{ \"ageMonths\": 3 }`, `{ \"seatChangedOn\": \"2026-09-20\" }`, `{ \"checks\": [\"sk_tax_debtors:listed\"] }`."},"package":{"type":"string","description":"On `locked`: the data package your plan lacks."},"reason":{"$ref":"#/components/schemas/UnavailableReason","description":"On `unavailable`, when the source said why (e.g. `daily_limit`)."}}}}}},"signals":{"oneOf":[{"type":"object","properties":{"ageMonths":{"type":["integer","null"]},"seatChangedOn":{"type":["string","null"],"format":"date"},"nameChangedOn":{"type":["string","null"],"format":"date"},"accountsChangedOn":{"type":["string","null"],"format":"date","description":"SK only: the published VAT accounts changed."},"companiesAtAddress":{"type":["integer","null"],"description":"Other companies with the same seat (a count, never names)."},"recordedSince":{"type":["string","null"],"format":"date","description":"Changes are recorded since this day."}}},{"type":"null"}]},"checks":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/ListCheck"},{"$ref":"#/components/schemas/LiveCheck"},{"$ref":"#/components/schemas/SanctionCheck"}]},"description":"The checks the rules read, after your plan's view."},"locked":{"type":"array","items":{"type":"object"},"description":"Facts your plan does not get: `{ field, package, plan }`."},"record":{"type":"object","description":"The verification record (`id`, `createdAt`, `sha256`, `verifyUrl`)."},"notice":{"type":"string"}}},"KybResponse":{"type":"object","required":["country","regNo","company","verification","checks","summary","coverage","notice"],"properties":{"country":{"$ref":"#/components/schemas/Country"},"regNo":{"type":"string"},"company":{"type":"object","description":"The company card (the fields of `GET /v1/companies/{cc}/{regNo}` without `notice`)."},"verification":{"type":"object","required":["exists","status","register","checkedAt"],"properties":{"exists":{"type":"boolean","const":true,"description":"The company is in the register's current data (a deleted one answers 410)."},"status":{"type":["string","null"],"description":"The register status (`active`, `in_liquidation`, `in_insolvency`, `dissolved`)."},"register":{"oneOf":[{"$ref":"#/components/schemas/Provenance"},{"type":"null"}],"description":"The register the card comes from, with its licence and retrieval time."},"checkedAt":{"type":"string","format":"date-time"}}},"checks":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/ListCheck"},{"$ref":"#/components/schemas/LiveCheck"},{"$ref":"#/components/schemas/SanctionCheck"}]},"description":"The `/vat` checks of the country and one `SanctionCheck` per sanctions list."},"summary":{"$ref":"#/components/schemas/KybSummary"},"coverage":{"type":"object","properties":{"subjects":{"type":"string","enum":["legal_entities"]},"steps":{"type":"array","items":{"type":"string"}},"notCovered":{"type":"array","items":{"type":"string"}},"note":{"type":"string"}}},"notice":{"$ref":"#/components/schemas/Notice"},"record":{"$ref":"#/components/schemas/RecordRef"}}},"ScreenResponse":{"type":"object","required":["subject","checks","summary","coverage","checkedAt","notice"],"properties":{"subject":{"type":"object","required":["name","country","identifiers"],"properties":{"name":{"type":"string"},"country":{"type":["string","null"]},"identifiers":{"type":"array","items":{"type":"string"}}}},"checks":{"type":"array","items":{"$ref":"#/components/schemas/SanctionCheck"}},"summary":{"$ref":"#/components/schemas/KybSummary"},"coverage":{"type":"object","properties":{"subjects":{"type":"string","enum":["legal_entities"]},"ownership":{"type":"boolean","const":false},"note":{"type":"string"}}},"checkedAt":{"type":"string","format":"date-time"},"notice":{"$ref":"#/components/schemas/Notice"},"record":{"$ref":"#/components/schemas/RecordRef"}}},"SanctionsResponse":{"type":"object","required":["country","regNo","company","checks","coverage","notice"],"properties":{"country":{"$ref":"#/components/schemas/Country"},"regNo":{"type":"string"},"company":{"type":"object","properties":{"name":{"type":["string","null"]}}},"checks":{"type":"array","items":{"$ref":"#/components/schemas/SanctionCheck"}},"coverage":{"type":"object","properties":{"subjects":{"type":"string","enum":["legal_entities"]},"ownership":{"type":"boolean","const":false},"note":{"type":"string"}}},"notice":{"$ref":"#/components/schemas/Notice"}}},"VatResponse":{"type":"object","required":["country","regNo","checks","notice"],"properties":{"country":{"$ref":"#/components/schemas/Country"},"regNo":{"type":"string"},"checks":{"type":"array","items":{"$ref":"#/components/schemas/Check"}},"notice":{"$ref":"#/components/schemas/Notice"},"record":{"$ref":"#/components/schemas/RecordRef"}}},"RecordRef":{"type":"object","description":"The verification record of this answer (docs/api/records.md). Missing only if it could not be stored.","required":["id","createdAt","sha256","verifyUrl"],"properties":{"id":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","description":"SHA-256 of the canonical JSON (keys sorted) of id, createdAt, kind, country, regNo, query and the answer without `record`."},"verifyUrl":{"type":"string","format":"uri","description":"Public page where anyone with this link can check the record."}}},"WatchStatus":{"type":"object","required":["country","regNo","watching","used","limit","canWatch"],"properties":{"country":{"$ref":"#/components/schemas/Country"},"regNo":{"type":"string"},"watching":{"type":"boolean"},"paused":{"type":"boolean","description":"Watched but over the plan's limit (after a downgrade): not compared."},"live":{"type":"boolean","description":"Within the plan's `liveLimit`: also gets the daily live checks."},"used":{"type":"integer","description":"Companies your organization watches."},"limit":{"type":"integer","description":"The plan's number of watched companies."},"liveLimit":{"type":"integer","description":"How many of them get the daily live checks."},"canWatch":{"type":"boolean","description":"The plan allows watching now."}}},"UsageResponse":{"type":"object","required":["historyMonths","months"],"properties":{"historyMonths":{"type":"integer","description":"How many months back the plan keeps."},"months":{"type":"array","description":"Newest first.","items":{"type":"object","required":["month","requests","errors","credits","companies","channels","rows"],"properties":{"month":{"type":"string","description":"YYYY-MM, a Bratislava month."},"requests":{"type":"integer"},"errors":{"type":"integer"},"credits":{"type":"integer"},"companies":{"type":["integer","null"],"description":"Companies checked; null once the month's detail rows are gone."},"channels":{"type":["object","null"],"additionalProperties":{"type":"integer"},"description":"Requests per channel."},"rows":{"type":["array","null"],"items":{"type":"object","properties":{"endpoint":{"type":"string","description":"The route template, e.g. `GET /v1/companies/{cc}/{regNo}/vat`."},"costKey":{"type":"string"},"label":{"type":["string","null"],"description":"The check's name in the price list (Slovak)."},"country":{"type":["string","null"]},"channel":{"type":"string"},"requests":{"type":"integer"},"errors":{"type":"integer"},"credits":{"type":"integer"}}}}}}}}},"WatchListResponse":{"type":"object","required":["limit","used","canWatch","items","events","notice"],"properties":{"limit":{"type":"integer"},"used":{"type":"integer"},"canWatch":{"type":"boolean"},"liveLimit":{"type":"integer"},"liveUsed":{"type":"integer"},"paused":{"type":"integer","description":"Watched companies over the limit."},"items":{"type":"array","items":{"type":"object","required":["country","regNo","since","paused","provenance"],"properties":{"country":{"$ref":"#/components/schemas/Country"},"regNo":{"type":"string"},"name":{"type":["string","null"]},"status":{"type":["string","null"]},"since":{"type":"string","format":"date-time"},"checkedAt":{"type":["string","null"],"format":"date-time"},"paused":{"type":"boolean"},"live":{"type":"boolean"},"state":{"type":["object","null"],"description":"`exists`, `status` and `lists` (per list code: `listed`, `amount`, `level`, `ibans`); only the fields of your plan's data packages; null while paused."},"provenance":{"type":"array","items":{"$ref":"#/components/schemas/Provenance"}}}}},"events":{"type":"array","description":"The last 200 changes, newest first.","items":{"type":"object","required":["id","country","regNo","kind","detail","detectedAt","provenance"],"properties":{"id":{"type":"integer"},"country":{"$ref":"#/components/schemas/Country"},"regNo":{"type":"string"},"name":{"type":["string","null"]},"kind":{"type":"string","enum":["status","deleted","listed","delisted","amount","level","accounts"]},"detail":{"type":"object","description":"`from` / `to`, `list`, `amount` + `currency` (numeric string, EUR), `level`, `added` / `removed` accounts."},"detectedAt":{"type":"string","format":"date-time"},"provenance":{"type":"array","items":{"$ref":"#/components/schemas/Provenance"}}}}},"notice":{"$ref":"#/components/schemas/Notice"}}},"RecordResponse":{"type":"object","required":["id","createdAt","kind","country","regNo","query","answer","sha256","verified"],"properties":{"id":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"kind":{"type":"string","enum":["vat","kyb","screen"]},"country":{"oneOf":[{"$ref":"#/components/schemas/Country"},{"type":"string","pattern":"^[A-Z]{2}$"},{"type":"null"}],"description":"The company's country; for a `screen` record the subject's country or null."},"regNo":{"type":"string","description":"The registration number; for a `screen` record the screened name (first 32 characters)."},"companyName":{"type":["string","null"]},"query":{"type":"object"},"answer":{"type":"object","description":"The answer as it was served (without `record`)."},"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"verified":{"type":"boolean","description":"The stored content still gives `sha256`."}}},"Score":{"type":"object","description":"Rule-based score (SK, CZ, RO), not a credit rating. Every point is listed in `factors`; unknown inputs are named in `coverage`; sources a country does not publish are in `notPublished`.","required":["value","grade","factors","coverage","computedAt"],"properties":{"value":{"type":"integer","minimum":0,"maximum":100},"grade":{"type":"string","enum":["A","B","C","D","E"]},"factors":{"type":"array","items":{"type":"object","required":["key","points"],"properties":{"key":{"type":"string","example":"equityRatio"},"points":{"type":"integer"},"params":{"type":"object","additionalProperties":{"type":"number"}}}}},"coverage":{"type":"object","properties":{"financials":{"type":"boolean"},"vatRisk":{"type":"boolean"},"taxDebtor":{"type":"boolean"},"reliability":{"type":"boolean"},"socialDebt":{"type":"boolean"},"healthDebt":{"type":"boolean"},"insolvency":{"type":"boolean"}}},"notPublished":{"type":"array","items":{"type":"string","enum":["taxDebtor","reliability","socialDebt","healthDebt"]},"description":"CZ and RO: inputs the country does not publish; neutral, not missing."},"computedAt":{"type":"string","format":"date-time"}}},"RiskResponse":{"type":"object","required":["country","regNo","company","checks","score","notice"],"properties":{"country":{"$ref":"#/components/schemas/Country"},"regNo":{"type":"string"},"company":{"type":"object","properties":{"status":{"oneOf":[{"$ref":"#/components/schemas/CompanyStatus"},{"type":"null"}]}}},"checks":{"type":"array","items":{"$ref":"#/components/schemas/Check"}},"score":{"oneOf":[{"$ref":"#/components/schemas/Score"},{"type":"null"}],"description":"SK, CZ and RO; null elsewhere."},"notice":{"$ref":"#/components/schemas/Notice"}}},"FinancialYear":{"type":"object","description":"Headline figures in whole euros as numeric strings; null = not in the statement.","required":["year","ratios","fromPrecedingColumn"],"properties":{"year":{"type":"integer"},"periodFrom":{"type":["string","null"],"pattern":"^\\d{4}-\\d{2}$"},"periodTo":{"type":["string","null"],"pattern":"^\\d{4}-\\d{2}$"},"template":{"type":["string","null"],"example":"Úč MUJ"},"extraction":{"type":"object","description":"CZ only: how the year was read. `xml`: the tax-office XML, exact (confidence `high`). `pdf_text`: the text layer of a PDF filing, machine-extracted by rules (`medium`). `ai`: a scanned PDF read by a language model (`low`). Every year passed the balance-sheet checks; machine-extracted years are not a register extract.","required":["method","confidence"],"properties":{"method":{"type":"string","enum":["xml","pdf_text","ai"]},"confidence":{"type":"string","enum":["high","medium","low"]},"document":{"type":["object","null"],"description":"The filing in the Sbírka listin.","properties":{"year":{"type":"integer"},"url":{"type":"string","format":"uri"}}},"file":{"type":["string","null"],"description":"The file name of the PDF that was read."},"extractedAt":{"type":["string","null"],"format":"date-time"},"model":{"type":["string","null"],"description":"`ai` only: the model that read it."}}},"source":{"type":"string","enum":["ro_mf","ro_anaf"],"description":"RO only: the year came from the Ministry of Finance's bulk files (ro_mf) or was asked at ANAF bilant live (ro_anaf)."},"revenue":{"type":["string","null"],"pattern":"^-?\\d+(\\.\\d+)?$","description":"Whole units of the answer's `currency`."},"profit":{"type":["string","null"],"pattern":"^-?\\d+(\\.\\d+)?$","description":"Whole units of the answer's `currency`."},"operatingProfit":{"type":["string","null"],"pattern":"^-?\\d+(\\.\\d+)?$","description":"Whole units of the answer's `currency`."},"totalAssets":{"type":["string","null"],"pattern":"^-?\\d+(\\.\\d+)?$","description":"Whole units of the answer's `currency`."},"fixedAssets":{"type":["string","null"],"pattern":"^-?\\d+(\\.\\d+)?$","description":"Whole units of the answer's `currency`."},"currentAssets":{"type":["string","null"],"pattern":"^-?\\d+(\\.\\d+)?$","description":"Whole units of the answer's `currency`."},"inventory":{"type":["string","null"],"pattern":"^-?\\d+(\\.\\d+)?$","description":"Whole units of the answer's `currency`."},"receivables":{"type":["string","null"],"pattern":"^-?\\d+(\\.\\d+)?$","description":"Whole units of the answer's `currency`."},"cash":{"type":["string","null"],"pattern":"^-?\\d+(\\.\\d+)?$","description":"Whole units of the answer's `currency`."},"equity":{"type":["string","null"],"pattern":"^-?\\d+(\\.\\d+)?$","description":"Whole units of the answer's `currency`."},"liabilities":{"type":["string","null"],"pattern":"^-?\\d+(\\.\\d+)?$","description":"Whole units of the answer's `currency`."},"shortTermLiabilities":{"type":["string","null"],"pattern":"^-?\\d+(\\.\\d+)?$","description":"Whole units of the answer's `currency`."},"longTermLiabilities":{"type":["string","null"],"pattern":"^-?\\d+(\\.\\d+)?$","description":"Whole units of the answer's `currency`."},"depreciation":{"type":["string","null"],"pattern":"^-?\\d+(\\.\\d+)?$","description":"SK: the summary row \"Odpisy a opravné položky k DNM a DHM\" (depreciation, amortisation and impairment); 0 when the row is blank. CZ: E.1 \"Úpravy hodnot DNM a DHM\" of a PDF income statement. Null for RO."},"ebitda":{"type":["string","null"],"pattern":"^-?\\d+(\\.\\d+)?$","description":"EBITDA computed by Karpata, not a register figure: operating profit + `depreciation`. SK, and CZ years read from a PDF with an income statement; null where the statement has no income statement or no depreciation (CZ XML, RO)."},"ratios":{"type":"object","description":"13 indicators as decimal strings computed with integers; null when an input is missing or the divisor is zero.","properties":{"currentRatio":{"type":["string","null"],"description":"Current assets / short-term liabilities (2 decimals)."},"quickRatio":{"type":["string","null"],"description":"(Current assets − inventory) / short-term liabilities (2 decimals)."},"cashRatio":{"type":["string","null"],"description":"Cash / short-term liabilities (2 decimals)."},"debtRatio":{"type":["string","null"],"description":"Liabilities / total assets (4 decimals)."},"equityRatio":{"type":["string","null"],"description":"Equity / total assets (4 decimals)."},"roe":{"type":["string","null"],"description":"Profit / equity (4 decimals); null when equity ≤ 0."},"roa":{"type":["string","null"],"description":"Profit / total assets (4 decimals)."},"netMargin":{"type":["string","null"],"description":"Profit / revenue (4 decimals)."},"operatingMargin":{"type":["string","null"],"description":"Operating profit / revenue (4 decimals)."},"ebitdaMargin":{"type":["string","null"],"description":"EBITDA / revenue (4 decimals)."},"revenueGrowth":{"type":["string","null"],"description":"Revenue change against the previous year (4 decimals); null without a previous revenue > 0."},"assetTurnover":{"type":["string","null"],"description":"Revenue / total assets (2 decimals)."},"receivableDays":{"type":["string","null"],"description":"Receivables × 365 / revenue (whole days)."}}},"statements":{"type":["object","null"],"description":"Every row of the statements as the template has them (RÚZ; CZ: the tax-office balance sheet, `income` empty); null when no table could be read.","properties":{"assets":{"type":"array","items":{"$ref":"#/components/schemas/StatementLine"}},"liabilities":{"type":"array","items":{"$ref":"#/components/schemas/StatementLine"}},"income":{"type":"array","items":{"$ref":"#/components/schemas/StatementLine"}}}},"fromPrecedingColumn":{"type":"boolean","description":"Filled from the next year's \"preceding period\" column."}}},"StatementLine":{"type":"object","required":["no","code","label","value"],"properties":{"no":{"type":["integer","null"],"description":"Row number in the template."},"code":{"type":["string","null"],"example":"B.II."},"label":{"type":"string","description":"Template label without its formula."},"value":{"type":["string","null"],"pattern":"^-?\\d+(\\.\\d+)?$","description":"Whole units of the answer's `currency`."}}},"HistoryResponse":{"type":"object","required":["country","regNo","since","items"],"properties":{"country":{"$ref":"#/components/schemas/Country"},"regNo":{"type":"string"},"since":{"type":["string","null"],"format":"date","description":"The day recording of changes started."},"items":{"type":"array","items":{"type":"object","required":["on","kind","field","recorded"],"properties":{"on":{"type":["string","null"],"format":"date","description":"For a change seen between two register snapshots (RO ONRC): the date of the snapshot that first shows it."},"after":{"type":"string","format":"date","description":"Only for a change seen between two register snapshots: the date of the previous snapshot. The change happened after `after` and by `on`."},"kind":{"type":"string","enum":["change","listed","delisted","founded","dissolved"]},"field":{"type":"string","description":"`name`, `legal_form`, `status`, `seat`, `nace`, `vat_payer`, `terminated_on`, `established_on`, `liquidation` (CZ register), or `check.<list>` for list events and `check.cz_vr_insolvency` for the CZ insolvency record. Delisting from the debtor and §81 lists erases the listing; CZ ADIS is not part of the history."},"from":{"type":["string","null"]},"to":{"type":["string","null"]},"list":{"type":"string"},"amount":{"type":["string","null"],"description":"Decimal string."},"currency":{"type":["string","null"]},"source":{"type":["string","null"]},"recorded":{"type":"boolean","description":"true = recorded when it changed; false = known from a date in the register."}}}}}},"FinancialsResponse":{"type":"object","required":["country","regNo","available","years","notice"],"properties":{"country":{"$ref":"#/components/schemas/Country"},"regNo":{"type":"string"},"available":{"type":"boolean","description":"false outside SK, CZ and RO."},"currency":{"type":"string","enum":["EUR","CZK","RON"],"description":"Currency of every amount: EUR (SK), CZK (CZ), RON (RO); never converted."},"years":{"type":"array","items":{"$ref":"#/components/schemas/FinancialYear"}},"documentOnlyYears":{"type":"array","items":{"type":"integer"},"description":"Years filed only as documents (SK: e.g. IFRS; CZ: PDF only)."},"filings":{"type":"object","description":"PL: the yearly statements filed with KRS, newest first, from the live extract (dział 3); no figures. `status` `unavailable` with `reason` when KRS did not answer.","properties":{"status":{"type":"string","enum":["ok","unavailable"]},"reason":{"type":"string"},"statements":{"type":"array","items":{"type":"object","properties":{"year":{"type":["integer","null"]},"periodFrom":{"type":["string","null"]},"periodTo":{"type":["string","null"]},"period":{"type":"string"},"filedOn":{"type":["string","null"]},"approved":{"type":"boolean"},"directorsReport":{"type":"boolean"},"audited":{"type":"boolean"}}}},"noObligation":{"type":"array","items":{"type":"object","properties":{"year":{"type":["integer","null"]},"period":{"type":"string"}}}}}},"ruzUrl":{"type":["string","null"],"format":"uri","description":"SK: the company in RÚZ."},"slUrl":{"type":["string","null"],"format":"uri","description":"CZ: the company's documents in the Sbírka listin."},"documents":{"type":"array","description":"CZ: the statements filed in the Sbírka listin, newest first (links only; we do not redistribute the documents).","items":{"type":"object","required":["year","url"],"properties":{"year":{"type":"integer"},"url":{"type":"string","format":"uri"}}}},"pdf":{"type":"object","description":"CZ only: the document-only years still without figures: `pending` (not read yet), `needsAi` (a scan, waiting for an extraction request), `unreadable` (could not be read; the document link stays).","properties":{"pending":{"type":"array","items":{"type":"integer"}},"needsAi":{"type":"array","items":{"type":"integer"}},"unreadable":{"type":"array","items":{"type":"integer"}},"aiAvailable":{"type":"boolean"}}},"sources":{"type":"array","description":"RO only: the Ministry of Finance bulk files the stored years come from, with their `years`.","items":{"allOf":[{"$ref":"#/components/schemas/Provenance"},{"type":"object","properties":{"years":{"type":"array","items":{"type":"integer"}}}}]}},"provenance":{"$ref":"#/components/schemas/Provenance"},"benchmark":{"type":["object","null"],"description":"Sector benchmark (Analytika package, RO only for now): the company's latest year with its sector (NACE / CAEN division), the sector's 10th to 90th percentile per metric (`revenue`, `profit`, `margin`, `growth`, `equity`, `employees`) and the company's `band` (`bottom`, `low`, `mid_low`, `mid_high`, `high`, `top`). Money and ratios as decimal strings. null without a sector or without the package."},"stale":{"type":"boolean","description":"Present when the source did not answer and an expired copy is served."},"notice":{"$ref":"#/components/schemas/Notice"}}}}}}