MyTempo API
Napojte účetnictví a daňovou evidenci v MyTempo na e-shop, CRM, n8n, Make nebo AI asistenta. API čte vše, co vidíte v aplikaci, a zakládá koncepty dokladů – účetní kroky zůstávají v rukou člověka.
Přehled integrací
MyTempo můžete propojit s dalšími aplikacemi a s AI asistenty. Data zůstávají v MyTempo a platí pro ně stejná pravidla a oprávnění jako v aplikaci.
| Způsob | K čemu | Pro koho |
|---|---|---|
| REST API | jiná aplikace čte data a zakládá koncepty dokladů, partnery nebo poštu | n8n, Make, Zapier, e-shop, CRM, vlastní skripty |
| AI asistenti (MCP) | ptáte se Clauda, ChatGPT nebo jiného asistenta na stav firem běžnou řečí | každý uživatel MyTempo |
| Webhooky připravujeme | MyTempo samo oznámí jiné aplikaci, že se něco stalo (např. faktura je uhrazená) | n8n, Make, e-shop |
Co přes napojení jde: číst vše, co vidíte v aplikaci (firmy, období, doklady, partnery, saldo, zůstatky peněz, výkazy, číselníky), zakládat koncepty dokladů, partnery, přílohy a přijatou poštu a nahrávat doklady k vytěžení.
Co přes napojení nejde: zařazení, zaúčtování, uzamčení a storno dokladu; párování, uzávěrka, změny osnovy a období; podání DPH a kontrolního hlášení, odeslání datové zprávy, platby; správa uživatelů, oprávnění a tokenů. Tyto kroky dělá vždy člověk v aplikaci. Koncept založený přes API nebo AI se nikde nepočítá, dokud ho nezkontrolujete a nezařadíte.
Napojení povoluje vlastník organizace v Nastavení organizace › Integrace › Povolení, zvlášť API a zvlášť AI asistenty. U každé firmy lze napojení vypnout. Napojení nikdy nevidí ani neudělá víc než uživatel, kterému patří, a můžete ho dál omezit na vybrané firmy a čtení (Oprávnění a rozsahy).
Začínáme s API
Za deset minut vytvoříte osobní token, ověříte spojení a načtete faktury po splatnosti. Stačí příkazový řádek s programem curl (je ve Windows 10+, macOS i Linuxu).
Než začnete: vlastník organizace musí mít zapnuto Povolit API a vy potřebujete přístup aspoň k jedné firmě.
1. Vytvořte token
- Otevřete Nastavení organizace › Integrace › Osobní tokeny a klikněte na Nový token.
- Název
Zkouška API, firmy: jedna testovací firma, rozsah Jen čtení, platnost 7 dní. - Potvrďte heslem a token zkopírujte. Zobrazí se jen jednou.
Token začíná tempo_pat_. Kdo ho zná, vidí data jako vy – nikomu ho neposílejte.
2. Ověřte spojení
export TEMPO_TOKEN="tempo_pat_…"
curl -s https://api.mytempo.cz/v1/me \
-H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď ukáže uživatele, organizaci a rozsah tokenu (Kdo jsem). Kód 401 znamená, že token je překlepnutý, zrušený nebo prošlý.
3. Načtěte firmy
curl -s https://api.mytempo.cz/v1/companies \
-H "Authorization: Bearer $TEMPO_TOKEN"
Hodnotu id firmy použijete v dalších voláních (Seznam firem).
4. Načtěte faktury po splatnosti
curl -s "https://api.mytempo.cz/v1/companies/9d42…/open-items?side=receivable&overdue=true" \
-H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď vrátí neuhrazené faktury s polem remaining (Neuhrazené pohledávky a závazky). Částky jsou vždy text s tečkou ("12100.00"), aby se nezaokrouhlovaly.
5. Ukliďte
Zkušební token zrušte v Nastavení organizace › Integrace › Osobní tokeny › Zrušit.
Osobní tokeny
Osobní token je heslo pro aplikaci: jiná aplikace s ním pracuje v MyTempo vaším jménem a jen v rozsahu, který mu nastavíte.
Vytvoření tokenu
- Otevřete Nastavení organizace › Integrace › Osobní tokeny a klikněte na Nový token.
- Vyplňte název podle integrace (např.
n8n – faktury po splatnosti), firmy (všechny nebo vybrané), rozsah (Jen čtení nebo jednotlivá práva k zápisu), platnost (nejvýš 1 rok, výchozí 90 dní) a volitelně povolené IP adresy (např.203.0.113.0/24). - Potvrďte heslem a token uložte do správce hesel nebo úložiště tajemství integrace. Zobrazí se jen jednou.
Doporučení
- Jeden token na jednu integraci – když jeden zrušíte, ostatní běží dál a v logu poznáte, který co dělal.
- Jen potřebné firmy a práva – pro přehledy stačí Jen čtení.
- Krátká platnost – 14 dní před vypršením vám MyTempo pošle oznámení.
- Token patří do přihlašovacích údajů integrace (credentials, connection), ne do textu scénáře, exportu ani snímku obrazovky.
Co se stane s tokenem, když…
| Situace | Token |
|---|---|
| uživateli odeberete oprávnění k firmě nebo modulu | okamžitě vidí méně – stejně jako uživatel |
| uživatel odejde z organizace nebo je zablokován | okamžitě přestane fungovat |
| vlastník vypne Povolit API | přestanou fungovat všechny tokeny organizace |
| token vyprší | vrací 401; vytvořte nový a vyměňte ho v integraci |
Unikl token? Hned ho zrušte (přestane platit okamžitě, historie zůstane), v Logu volání zkontrolujte, co se s ním dělo, a vytvořte nový.
Základní pravidla API
Adresa a ověření
Základní adresa je https://api.mytempo.cz/v1, jen HTTPS. Data firmy leží pod /v1/companies/{company_id}/…; organizace se určí z tokenu. Každý požadavek nese hlavičku Authorization: Bearer tempo_pat_…; aplikace přihlášené přes OAuth posílají přístupový token z přihlášení. Odpověď nese X-Tempo-Api-Version.
Formáty
| Údaj | Formát | Příklad |
|---|---|---|
| Částka | text s tečkou, 2 a více desetinných míst | "12100.00" |
| Datum | YYYY-MM-DD |
"2026-10-31" |
| Čas | ISO 8601 s posunem | "2026-11-11T08:15:00+01:00" |
| Měna | kód ISO 4217 | "CZK", "EUR" |
| Identifikátor | UUID | "9d42c1e0-…" |
| Druh dokladu | kód z MyTempo | "FV", "FP", "ID" |
Částky jsou text, protože desetinná čísla v JSON se v mnoha nástrojích zaokrouhlují; na číslo je převeďte až pro výpočet. Datum „dnes“ neposílejte – určuje ho MyTempo podle českého času.
Stránkování
Seznamy vrací nejvýš limit záznamů (výchozí 100, maximum 500) a next_cursor. Pokračujte s cursor=<next_cursor>, dokud není null. Seznam se nikdy tiše nezkrátí. Pro pravidelnou synchronizaci používejte filtr updated_since místo stahování celých seznamů.
Souběžné úpravy
Každý záznam má version a odpověď hlavičku ETag. Úprava vyžaduje If-Match s touto hodnotou; když záznam mezitím změnil někdo jiný, dostanete 409 version_conflict – načtěte ho znovu a změnu zopakujte.
Bezpečné opakování
Každý POST, který něco zakládá, nese hlavičku Idempotency-Key s jedinečnou hodnotou (UUID, číslo objednávky). Opakování se stejným klíčem nic nezaloží podruhé a vrátí původní výsledek; stejný klíč s jiným obsahem vrátí 409 idempotency_conflict. Klíč platí 24 hodin.
Chyby
Chyby mají formát application/problem+json (RFC 9457). V programu se řiďte polem code, pole detail a message jsou česky pro lidi. Přehled kódů je v části Chybové kódy.
{
"type": "https://api.mytempo.cz/chyby/validation_failed",
"title": "Neplatné údaje",
"status": 422,
"code": "validation_failed",
"detail": "Doklad nejde uložit.",
"errors": [
{ "field": "due_date", "code": "date_before_issue", "message": "Splatnost je před datem vystavení." }
]
}
Limity
| Limit | Hodnota |
|---|---|
| požadavky na token | 120 za minutu |
| požadavky na organizaci | 20 000 za den |
| výkazy a sestavy za celou firmu | 30 za hodinu |
| velikost souboru | 20 MB |
Odpovědi nesou X-RateLimit-Limit, X-RateLimit-Remaining a X-RateLimit-Reset; po překročení přijde 429 s Retry-After v sekundách.
Verze API
Ve verzi v1 se jen přidává (nová pole, volání, hodnoty) – integrace musí neznámá pole ignorovat. Nekompatibilní změna přijde jako v2 a v1 poběží nejméně 12 měsíců souběžně.
Oprávnění a rozsahy
Napojení smí jen to, co splní všechny tři podmínky: vaše oprávnění v MyTempo (firmy, moduly, knihy), rozsah tokenu nebo souhlasu a povolení organizace a firmy. Token tedy nikdy nesmí víc než vy, a když vám někdo oprávnění odebere, token ho ztratí ve stejné chvíli.
| Rozsah | V aplikaci | Co dovolí |
|---|---|---|
read |
Jen čtení | číst vše, co vidíte, v povolených firmách |
partners:write |
Adresář – zápis | zakládat a upravovat partnery, načítat ARES |
documents:write |
Doklady – koncepty | zakládat koncepty FV, FP, ZFV, ZFP, ID, PO, přílohy a poznámky |
bank:import |
Banka – import výpisů | nahrát výpis GPC nebo camt.053 |
mail:write |
Pošta – zápis | založit přijatou zásilku se skenem |
extraction:write |
Vytěžování | nahrát soubor k vytěžení |
webhooks:manage |
Webhooky | spravovat webhooky tokenu |
Rozsahy pro zápis přijdou s další verzí. Každý zápis projde stejnými kontrolami jako v aplikaci (např. právo zapisovat do knihy). Odpověď 403 s kódem insufficient_scope znamená chybějící rozsah tokenu, kód forbidden chybějící oprávnění uživatele.
Napojení n8n a Make
Zatím MyTempo napojíte obecným HTTP modulem; vlastní uzel pro n8n a aplikaci pro Make připravujeme. Popis API ve formátu OpenAPI (https://api.mytempo.cz/v1/openapi.json) můžete do obou nástrojů importovat.
n8n
- Credentials › Add credential › Header Auth: Name
Authorization, ValueBearer tempo_pat_…, uložte jakoMyTempo. - Uzel HTTP Request: Method
GET, URLhttps://api.mytempo.cz/v1/companies/{id firmy}/open-items, Authentication Header Auth ›MyTempo, queryside=receivable,overdue=true. - Pagination: parametr
cursorz polenext_cursor, dokud není prázdné.
Make
- Modul HTTP › Make a request, Method
GET, URLhttps://api.mytempo.cz/v1/companies/{id firmy}/open-items?side=receivable&overdue=true. - Hlavička
Authorization: Bearer tempo_pat_…– token uložte jako proměnnou, ne do sdíleného scénáře. - Parse response: Ano.
Ukázka: každé pondělí faktury po splatnosti e-mailem
- Spouštěč Schedule (n8n) nebo plánování scénáře (Make): pondělí 7:00.
- Požadavek na
open-itemsse stránkováním. - Seřadit podle
due_date, sečístremaining(převést text na číslo). - Odeslat e-mail se seznamem: číslo, partner, splatnost, zbývá.
Hlídejte 429 (počkejte podle Retry-After; v n8n zapněte Retry On Fail) a pro změny používejte updated_since.
AI asistenti (MCP)
AI asistent (Claude, ChatGPT, Cursor, n8n) se k MyTempo připojí přes MCP, otevřený protokol pro propojení AI s aplikacemi. Klíč nepotřebujete: zadáte adresu https://mcp.mytempo.cz a přihlásíte se do MyTempo.
Připojení
- V asistentovi přidejte vlastní konektor (Claude: Settings › Connectors › Add custom connector) s adresou
https://mcp.mytempo.cz. - Klikněte na Connect – otevře se přihlášení do MyTempo.
- Na stránce souhlasu zvolte organizaci, firmy a rozsah Jen čtení a klikněte na Povolit.
Nástroje bez podpory OAuth použijí osobní token v hlavičce Authorization. Odpojení: Nastavení organizace › Integrace › Připojené aplikace › Odpojit – přístup skončí okamžitě.
Nástroje
| Nástroj | Co vrátí |
|---|---|
seznam_firem |
firmy, metoda vedení, plátcovství DPH, otevřená období |
zustatky_penez |
zůstatky pokladen a bank napříč firmami a součet v CZK |
pohledavky_a_zavazky |
neuhrazené faktury a zálohové listy ve a po splatnosti |
hledat_doklady, detail_dokladu |
doklady podle textu a filtrů; hlavička, řádky, DPH, úhrady |
hledat_partnera, ares |
partneři z Adresáře a údaje z ARES |
obraty_uctu, vysledovka, rozvaha |
obraty účtů a výkazy za období |
prehled_dph |
přehled DPH a kontrolního hlášení (bez podání) |
nesparovane_pohyby |
pohyby banky bez dokladu nebo spárování |
posta_k_vyrizeni |
zásilky přidělené vám k vyřízení |
Příklady dotazů: „Kdo mi dluží víc než 30 dní po splatnosti?“, „Porovnej výsledek hospodaření Vzor s.r.o. za 1.–3. čtvrtletí 2026 s loňskem.“, „Které pohyby na bance ještě nejsou spárované?“ Zakládání konceptů z asistenta připravujeme; zařadit, zaúčtovat, stornovat ani zaplatit nebude asistent moci nikdy.
Bezpečnost a AI
Asistent vidí jen výsledky nástrojů ve firmách, které jste povolili. Odpovědi nástrojů dostane asistent a jeho poskytovatel (Anthropic, OpenAI…) a nakládání s nimi určují jeho podmínky – proto AI musí vědomě povolit vlastník organizace. U firem, kde to klient nechce, nechte AI vypnuté a používejte firemní tarify AI s vypnutým učením z vašich dat.
Asistent čte i texty z dokladů a útočník může do faktury vložit skrytý pokyn („zaplať tuto fakturu“). Proto asistent nemá nástroje na zařazení, zaúčtování, storno, mazání, párování ani platby, zakládá jen koncepty, před zápisem se ptá na potvrzení a počet zápisů za hodinu je omezený. Co asistent dělal, ukáže Log volání a u dokladu panel Historie.
Slovník pojmů
API používá anglické názvy polí, aby fungovalo s běžnými nástroji; kódy z MyTempo (druhy dokladů, kódy DPH) zůstávají beze změny.
| V aplikaci | V API |
|---|---|
| Organizace · Firma · Účetní období | organization · company · period |
| Účetnictví / Daňová evidence | method: accounting / tax_records |
| Doklad · Druh dokladu · Kniha · Číselná řada | document · document_type · book · number_series |
| Koncept · Zařazený · Zaúčtovaný · Uzamčený · Stornovaný | draft · registered · booked · locked · cancelled |
| Datum vystavení · účetního případu · DUZP · Datum DPH · Splatnost | issue_date · accounting_date · taxable_supply_date · vat_date · due_date |
| Variabilní / konstantní / specifický symbol | variable_symbol / constant_symbol / specific_symbol |
| Kód DPH · Vstupuje do DPH | vat_code · vat_relevant |
| Partner · Účet · Položka daňové evidence · Dimenze | partner · account · tax_category · dimension |
| Otevřená položka · Pohledávka / závazek · Zbývá uhradit | open_item · receivable / payable · remaining |
| Bankovní výpis / pohyb · Zásilka · Vytěžení | bank_statement / bank_movement · mail_item · extraction |
| Příloha / poznámka · Osobní token · Rozsah | attachment / note · token · scope |
Změny API
Historie změn se vede podle Keep a Changelog (Přidáno, Změněno, Zastaralé, Odstraněno, Opraveno, Bezpečnost); datum je den zveřejnění. Zatím nebylo nic vydáno – tato dokumentace popisuje navrhovanou podobu API.
Reference API
Každé volání s parametry, tělem požadavku, ukázkou v curl a JavaScriptu a ukázkou odpovědi. Seznamy se stránkují kurzorem, chyby mají jednotný formát (viz Chybové kódy).
Identita
Kdo volá a co token smí. První volání každé integrace.
Kdo jsem
Beta/meVrátí uživatele, organizaci a rozsah tokenu (firmy, práva, platnost). Použijte jako první volání každé integrace a pro ověření, že token platí.
Rozsah tokenu: libovolný
Odpovědi
- 200 Úspěch
- 401
unauthorized– Chybí, vypršel nebo byl zrušen token.
curl -X GET "https://api.mytempo.cz/v1/me" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/me", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"user": {
"id": "5b1c…",
"name": "Jana Nováková"
},
"organization": {
"id": "a3f0…",
"name": "Účetní kancelář Vzor"
},
"token": {
"name": "Zkouška API",
"scopes": [
"read"
],
"companies": [
"9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04"
],
"expires_at": "2026-11-18"
}
}
Firmy a období
Firmy, ke kterým má token přístup, jejich údaje a účetní období.
Seznam firem
Beta/companiesFirmy, ke kterým má token přístup (průnik oprávnění uživatele a rozsahu tokenu).
Rozsah tokenu: read
Parametry dotazu
limitintegervýchozí 100Počet záznamů na stránku, 1–500.
Příklad: 100
cursorstringHodnota next_cursor z předchozí odpovědi.
Příklad: eyJpZCI6Ijk…
Odpovědi
- 200 Úspěch – objekt Company
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 429
rate_limited– Překročený limit – počkejte podleRetry-After.
curl -X GET "https://api.mytempo.cz/v1/companies" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/companies", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"data": [
{
"id": "9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04",
"name": "Vzor s.r.o.",
"ico": "12345678",
"dic": "CZ12345678",
"organization_id": "a3f0b1c2-…",
"method": "accounting",
"vat_payer": true,
"vat_period": "month",
"currency": "CZK"
}
],
"next_cursor": "eyJpZCI6Ijk…"
}
Detail firmy
Beta/companies/{company_id}Údaje firmy včetně metody vedení, plátcovství DPH a měny účetnictví.
Rozsah tokenu: read
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
Odpovědi
- 200 Úspěch – objekt Company
- 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 404
not_found– Záznam neexistuje, nebo k němu nemáte přístup.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"id": "9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04",
"name": "Vzor s.r.o.",
"ico": "12345678",
"dic": "CZ12345678",
"organization_id": "a3f0b1c2-…",
"method": "accounting",
"vat_payer": true,
"vat_period": "month",
"currency": "CZK"
}
Účetní období
Beta/companies/{company_id}/periodsObdobí firmy seřazená od nejnovějšího se stavem (otevřené / uzavřené / uzamčené).
Rozsah tokenu: read
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
Odpovědi
- 200 Úspěch – objekt Period
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 429
rate_limited– Překročený limit – počkejte podleRetry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/periods" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/periods", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"data": [
{
"id": "p26…",
"name": "2026",
"date_from": "2026-01-01",
"date_to": "2026-12-31",
"status": "open"
}
],
"next_cursor": null
}
Číselníky
Kódy DPH, měny, způsoby platby, osnova, položky daňové evidence, dimenze a kurzy ČNB.
Kódy DPH
Beta/companies/{company_id}/vat-codesKódy DPH firmy platné k datu, se sazbou a řádkem přiznání / oddílem KH.
Rozsah tokenu: read
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
Parametry dotazu
datedatePlatnost k datu; výchozí dnes.
Odpovědi
- 200 Úspěch
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 429
rate_limited– Překročený limit – počkejte podleRetry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/vat-codes" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/vat-codes", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"data": [
{
"code": "21",
"name": "Tuzemsko 21 %",
"rate": "21",
"direction": "output",
"vat_return_line": "1",
"kh_section": "A.4/A.5"
}
],
"next_cursor": null
}
Měny
Beta/companies/{company_id}/currenciesMěny používané ve firmě.
Rozsah tokenu: read
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
Odpovědi
- 200 Úspěch
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 429
rate_limited– Překročený limit – počkejte podleRetry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/currencies" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/currencies", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"data": [
{
"code": "CZK",
"name": "Česká koruna",
"decimals": 2
},
{
"code": "EUR",
"name": "Euro",
"decimals": 2
}
],
"next_cursor": null
}
Způsoby platby
Beta/companies/{company_id}/payment-methodsZpůsoby platby firmy.
Rozsah tokenu: read
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
Odpovědi
- 200 Úspěch
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 429
rate_limited– Překročený limit – počkejte podleRetry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/payment-methods" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/payment-methods", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"data": [
{
"code": "PREVOD",
"name": "Převodem",
"active": true
}
],
"next_cursor": null
}
Účtová osnova
Beta/companies/{company_id}/accountsÚčty období (jen firmy s účetnictvím). Účty se vždy zobrazují jako „číslo – název“.
Rozsah tokenu: read
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
Parametry dotazu
period_iduuidÚčetní období; bez zadání aktuální období podle dnešního data.
activebooleanvýchozí trueJen aktivní účty.
Odpovědi
- 200 Úspěch
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 429
rate_limited– Překročený limit – počkejte podleRetry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/accounts" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/accounts", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"data": [
{
"number": "311000",
"name": "Odběratelé",
"kind": "receivables",
"active": true
}
],
"next_cursor": null
}
Položky daňové evidence
Beta/companies/{company_id}/tax-categoriesPoložky období (jen firmy s daňovou evidencí); technické položky se nevrací.
Rozsah tokenu: read
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
Parametry dotazu
period_iduuidÚčetní období; bez zadání aktuální období podle dnešního data.
Odpovědi
- 200 Úspěch
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 429
rate_limited– Překročený limit – počkejte podleRetry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/tax-categories" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/tax-categories", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"data": [
{
"code": "P01",
"name": "Příjmy z prodeje služeb",
"kind": "income"
}
],
"next_cursor": null
}
Dimenze
Beta/companies/{company_id}/dimensionsTypy dimenzí (středisko, zakázka, vozidlo…) a jejich hodnoty.
Rozsah tokenu: read
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
Odpovědi
- 200 Úspěch
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 429
rate_limited– Překročený limit – počkejte podleRetry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/dimensions" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/dimensions", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"data": [
{
"type": "STR",
"name": "Středisko",
"values": [
{
"code": "01",
"name": "Praha"
}
]
}
],
"next_cursor": null
}
Kurzy ČNB
Beta/exchange-ratesKurzovní lístek ČNB k datu (platí poslední vyhlášený kurz).
Rozsah tokenu: read
Parametry dotazu
datedateDatum; výchozí dnes.
Příklad: 2026-11-11
currencystringJen jedna měna (ISO 4217).
Příklad: EUR
Odpovědi
- 200 Úspěch
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 429
rate_limited– Překročený limit – počkejte podleRetry-After.
curl -X GET "https://api.mytempo.cz/v1/exchange-rates" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/exchange-rates", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"date": "2026-11-11",
"rates": [
{
"currency": "EUR",
"amount": 1,
"rate": "24.315"
}
]
}
Adresář
Partneři firmy – odběratelé a dodavatelé, jejich bankovní účty a údaje z ARES.
Seznam partnerů
Beta/companies/{company_id}/partnersPartneři z Adresáře firmy. Hledání podle názvu, IČO nebo e-mailu.
Rozsah tokenu: read
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
Parametry dotazu
qstringHledaný text (název, IČO, e-mail).
Příklad: odběratel
icostringPřesné IČO.
Příklad: 87654321
updated_sincedate-timeJen záznamy změněné od zadaného času (pro pravidelnou synchronizaci).
Příklad: 2026-11-01T00:00:00+01:00
limitintegervýchozí 100Počet záznamů na stránku, 1–500.
Příklad: 100
cursorstringHodnota next_cursor z předchozí odpovědi.
Příklad: eyJpZCI6Ijk…
Odpovědi
- 200 Úspěch – objekt Partner
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 429
rate_limited– Překročený limit – počkejte podleRetry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/partners" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/partners", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"data": [
{
"id": "c0d4a7b2-1e3f-4a5b-8c9d-0e1f2a3b4c5d",
"kind": "company",
"name": "Odběratel a.s.",
"ico": "87654321",
"dic": "CZ87654321",
"address": {
"street": "Hlavní 12",
"city": "Brno",
"zip": "60200",
"country": "CZ"
},
"email": "fakturace@odberatel.example",
"bank_accounts": [
{
"account_number": "123456789",
"bank_code": "0100",
"iban": "CZ65 0100 0000 0001 2345 6789",
"currency": "CZK"
}
],
"tags": [
"velkoodběr"
],
"version": 3,
"updated_at": "2026-10-20T09:14:00+02:00"
}
],
"next_cursor": "eyJpZCI6Ijk…"
}
Detail partnera
Beta/companies/{company_id}/partners/{partner_id}Partner včetně bankovních účtů a štítků. Odpověď nese ETag pro následnou úpravu.
Rozsah tokenu: read
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
partner_iduuidpovinnýIdentifikátor partnera.
Odpovědi
- 200 Úspěch – objekt Partner
- 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 404
not_found– Záznam neexistuje, nebo k němu nemáte přístup.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/partners/…" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/partners/…", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"id": "c0d4a7b2-1e3f-4a5b-8c9d-0e1f2a3b4c5d",
"kind": "company",
"name": "Odběratel a.s.",
"ico": "87654321",
"dic": "CZ87654321",
"address": {
"street": "Hlavní 12",
"city": "Brno",
"zip": "60200",
"country": "CZ"
},
"email": "fakturace@odberatel.example",
"bank_accounts": [
{
"account_number": "123456789",
"bank_code": "0100",
"iban": "CZ65 0100 0000 0001 2345 6789",
"currency": "CZK"
}
],
"tags": [
"velkoodběr"
],
"version": 3,
"updated_at": "2026-10-20T09:14:00+02:00"
}
Založit partnera
Připravujeme/companies/{company_id}/partnersZaloží partnera. Když zadáte jen IČO a from_ares: true, údaje se doplní z ARES. Partner se stejným IČO vrátí 409 partner_exists s odkazem na existujícího.
Rozsah tokenu: partners:write
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
Hlavičky
Idempotency-KeystringpovinnýJedinečný klíč požadavku (UUID, číslo objednávky). Opakování se stejným klíčem nic nezaloží podruhé.
Příklad: objednavka-2026-004512
Tělo požadavku application/json
kindenumpovinnécompany nebo person.
namestringNázev (u from_ares nepovinný).
icostringIČO.
from_aresbooleanDoplnit údaje z ARES.
addressAddressSídlo.
emailstringE-mail.
bank_accountsarrayBankovní účty.
Odpovědi
- 201 Úspěch – objekt Partner
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 409
version_conflict / idempotency_conflict– Souběžná změna, opakovaný klíč s jiným obsahem, uzavřené období. - 422
validation_failed– Údaje neprošly kontrolou – podrobnosti verrors. - 429
rate_limited– Překročený limit – počkejte podleRetry-After.
curl -X POST "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/partners" \
-H "Authorization: Bearer $TEMPO_TOKEN" \
-H "Idempotency-Key: objednavka-2026-004512" \
-H "Content-Type: application/json" \
-d '{
"kind": "company",
"ico": "87654321",
"from_ares": true,
"email": "fakturace@odberatel.example"
}'
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/partners", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`,
"Idempotency-Key": "objednavka-2026-004512",
"Content-Type": "application/json"
},
body: JSON.stringify({
"kind": "company",
"ico": "87654321",
"from_ares": true,
"email": "fakturace@odberatel.example"
})
});
const data = await res.json();
{
"id": "c0d4a7b2-1e3f-4a5b-8c9d-0e1f2a3b4c5d",
"kind": "company",
"name": "Odběratel a.s.",
"ico": "87654321",
"dic": "CZ87654321",
"address": {
"street": "Hlavní 12",
"city": "Brno",
"zip": "60200",
"country": "CZ"
},
"email": "fakturace@odberatel.example",
"bank_accounts": [
{
"account_number": "123456789",
"bank_code": "0100",
"iban": "CZ65 0100 0000 0001 2345 6789",
"currency": "CZK"
}
],
"tags": [
"velkoodběr"
],
"version": 3,
"updated_at": "2026-10-20T09:14:00+02:00"
}
Upravit partnera
Připravujeme/companies/{company_id}/partners/{partner_id}Změní jen zaslaná pole. Vyžaduje If-Match; při souběžné změně vrátí 409 version_conflict.
Rozsah tokenu: partners:write
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
partner_iduuidpovinnýIdentifikátor partnera.
Hlavičky
If-MatchstringpovinnýHodnota ETag / version z posledního načtení záznamu.
Příklad: "7"
Tělo požadavku application/json
emailstringE-mail.
addressAddressSídlo.
tagsarray of stringŠtítky.
Odpovědi
- 200 Úspěch – objekt Partner
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 404
not_found– Záznam neexistuje, nebo k němu nemáte přístup. - 409
version_conflict / idempotency_conflict– Souběžná změna, opakovaný klíč s jiným obsahem, uzavřené období. - 422
validation_failed– Údaje neprošly kontrolou – podrobnosti verrors.
curl -X PATCH "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/partners/…" \
-H "Authorization: Bearer $TEMPO_TOKEN" \
-H "If-Match: "7"" \
-H "Content-Type: application/json" \
-d '{
"email": "nova.fakturace@odberatel.example"
}'
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/partners/…", {
method: "PATCH",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`,
"If-Match": ""7"",
"Content-Type": "application/json"
},
body: JSON.stringify({
"email": "nova.fakturace@odberatel.example"
})
});
const data = await res.json();
{
"id": "c0d4a7b2-1e3f-4a5b-8c9d-0e1f2a3b4c5d",
"kind": "company",
"name": "Odběratel a.s.",
"ico": "87654321",
"dic": "CZ87654321",
"address": {
"street": "Hlavní 12",
"city": "Brno",
"zip": "60200",
"country": "CZ"
},
"email": "fakturace@odberatel.example",
"bank_accounts": [
{
"account_number": "123456789",
"bank_code": "0100",
"iban": "CZ65 0100 0000 0001 2345 6789",
"currency": "CZK"
}
],
"tags": [
"velkoodběr"
],
"version": 4,
"updated_at": "2026-10-20T09:14:00+02:00"
}
Údaje z ARES
Beta/ares/{ico}Načte subjekt z ARES (název, sídlo, DIČ, právní forma). Nic neukládá.
Rozsah tokenu: read
Parametry cesty
icostringpovinnýIČO (8 číslic).
Příklad: 87654321
Odpovědi
- 200 Úspěch
- 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 404
not_found– Záznam neexistuje, nebo k němu nemáte přístup. - 429
rate_limited– Překročený limit – počkejte podleRetry-After.
curl -X GET "https://api.mytempo.cz/v1/ares/87654321" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/ares/87654321", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"ico": "87654321",
"name": "Odběratel a.s.",
"dic": "CZ87654321",
"legal_form": "121",
"kind": "company",
"address": {
"street": "Hlavní 12",
"city": "Brno",
"zip": "60200",
"country": "CZ"
}
}
Doklady
Faktury, zálohové listy, interní a pokladní doklady. Přes API jen čtení a koncepty.
Seznam dokladů
Beta/companies/{company_id}/documentsDoklady firmy napříč obdobími, seřazené od nejnovějšího. Seznam neobsahuje řádky – ty vrací detail.
Rozsah tokenu: read
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
Parametry dotazu
document_typestringDruh dokladu, více hodnot čárkou.
Příklad: FV,ZFV
statusenumdraft, registered, booked, locked, cancelled; více čárkou.
bookstringKód knihy.
Příklad: FV
date_fromdateDatum účetního případu od.
date_todateDatum účetního případu do.
partner_iduuidPartner.
variable_symbolstringVariabilní symbol (přesná shoda).
qstringHledání v čísle, popisu a partnerovi.
updated_sincedate-timeJen záznamy změněné od zadaného času (pro pravidelnou synchronizaci).
Příklad: 2026-11-01T00:00:00+01:00
limitintegervýchozí 100Počet záznamů na stránku, 1–500.
Příklad: 100
cursorstringHodnota next_cursor z předchozí odpovědi.
Příklad: eyJpZCI6Ijk…
Odpovědi
- 200 Úspěch – objekt Document
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 429
rate_limited– Překročený limit – počkejte podleRetry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/documents" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/documents", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"data": [
{
"id": "e71a3b2c-4d5e-4f60-8a7b-9c0d1e2f3a4b",
"document_type": "FV",
"status": "registered",
"number": "FV2026-0142",
"book": {
"id": "b1…",
"code": "FV",
"name": "Vydané faktury"
},
"partner": {
"id": "c0d4a7b2-1e3f-4a5b-8c9d-0e1f2a3b4c5d",
"name": "Odběratel a.s.",
"ico": "87654321"
},
"issue_date": "2026-10-17",
"accounting_date": "2026-10-17",
"taxable_supply_date": "2026-10-17",
"due_date": "2026-10-31",
"variable_symbol": "20260142",
"currency": "CZK",
"exchange_rate": null,
"amount_base": "10000.00",
"amount_vat": "2100.00",
"amount_total": "12100.00",
"remaining": "12100.00",
"source": "app",
"version": 5,
"updated_at": "2026-10-17T10:02:11+02:00",
"app_url": "https://app.mytempo.cz/doklady/e71a3b2c-4d5e-4f60-8a7b-9c0d1e2f3a4b"
}
],
"next_cursor": "eyJpZCI6Ijk…"
}
Detail dokladu
Beta/companies/{company_id}/documents/{document_id}Hlavička, řádky, rekapitulace DPH a zaúčtování (účty jen ke čtení). Odpověď nese ETag.
Rozsah tokenu: read
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
document_iduuidpovinnýIdentifikátor dokladu.
Odpovědi
- 200 Úspěch – objekt Document
- 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 404
not_found– Záznam neexistuje, nebo k němu nemáte přístup.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/documents/…" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/documents/…", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"id": "e71a3b2c-4d5e-4f60-8a7b-9c0d1e2f3a4b",
"document_type": "FV",
"status": "registered",
"number": "FV2026-0142",
"book": {
"id": "b1…",
"code": "FV",
"name": "Vydané faktury"
},
"partner": {
"id": "c0d4a7b2-1e3f-4a5b-8c9d-0e1f2a3b4c5d",
"name": "Odběratel a.s.",
"ico": "87654321"
},
"issue_date": "2026-10-17",
"accounting_date": "2026-10-17",
"taxable_supply_date": "2026-10-17",
"due_date": "2026-10-31",
"variable_symbol": "20260142",
"currency": "CZK",
"exchange_rate": null,
"amount_base": "10000.00",
"amount_vat": "2100.00",
"amount_total": "12100.00",
"remaining": "12100.00",
"source": "app",
"version": 5,
"updated_at": "2026-10-17T10:02:11+02:00",
"app_url": "https://app.mytempo.cz/doklady/e71a3b2c-4d5e-4f60-8a7b-9c0d1e2f3a4b",
"lines": [
{
"id": "l1…",
"description": "Vedení účetnictví 10/2026",
"quantity": "1",
"unit": "měs.",
"unit_price": "10000.00",
"vat_code": "21",
"vat_rate": "21",
"amount_base": "10000.00",
"amount_vat": "2100.00",
"account": "602100",
"tax_category": null,
"dimensions": {
"STR": "01"
}
}
],
"vat_summary": [
{
"vat_rate": "21",
"base": "10000.00",
"vat": "2100.00"
}
]
}
Založit koncept dokladu
Připravujeme/companies/{company_id}/documentsZaloží koncept dokladu (FV, FP, ZFV, ZFP, ID, PO). Koncept nemá číslo, nikde se nepočítá a zařadí ho člověk v aplikaci. Platí stejné kontroly a práva ke knize jako v aplikaci; odpověď obsahuje odkaz na koncept.
Rozsah tokenu: documents:write
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
Hlavičky
Idempotency-KeystringpovinnýJedinečný klíč požadavku (UUID, číslo objednávky). Opakování se stejným klíčem nic nezaloží podruhé.
Příklad: objednavka-2026-004512
Tělo požadavku application/json
document_typestringpovinnéFV, FP, ZFV, ZFP, ID nebo PO.
book_codestringKód knihy; bez zadání výchozí kniha druhu.
partner_iduuidPartner z Adresáře (u FV / FP povinný při zařazení).
issue_datedateDatum vystavení; výchozí dnes.
due_datedateSplatnost; výchozí podle partnera / firmy.
taxable_supply_datedateDUZP.
variable_symbolstringVS; bez zadání se doplní z čísla při zařazení.
supplier_numberstringČíslo dokladu dodavatele (FP, ZFP).
currencystringMěna; výchozí měna firmy.
notestringPoznámka k dokladu.
linesarraypovinnéŘádky: description, quantity, unit, unit_price, vat_code, dimensions.
Odpovědi
- 201 Úspěch – objekt Document
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 409
version_conflict / idempotency_conflict– Souběžná změna, opakovaný klíč s jiným obsahem, uzavřené období. - 422
validation_failed– Údaje neprošly kontrolou – podrobnosti verrors. - 429
rate_limited– Překročený limit – počkejte podleRetry-After.
curl -X POST "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/documents" \
-H "Authorization: Bearer $TEMPO_TOKEN" \
-H "Idempotency-Key: objednavka-2026-004512" \
-H "Content-Type: application/json" \
-d '{
"document_type": "FV",
"book_code": "FV",
"partner_id": "c0d4a7b2-1e3f-4a5b-8c9d-0e1f2a3b4c5d",
"issue_date": "2026-11-11",
"due_date": "2026-11-25",
"variable_symbol": "2026004512",
"currency": "CZK",
"note": "Objednávka e-shopu 004512",
"lines": [
{
"description": "Konzultace",
"quantity": "2",
"unit": "hod",
"unit_price": "1500.00",
"vat_code": "21"
}
]
}'
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/documents", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`,
"Idempotency-Key": "objednavka-2026-004512",
"Content-Type": "application/json"
},
body: JSON.stringify({
"document_type": "FV",
"book_code": "FV",
"partner_id": "c0d4a7b2-1e3f-4a5b-8c9d-0e1f2a3b4c5d",
"issue_date": "2026-11-11",
"due_date": "2026-11-25",
"variable_symbol": "2026004512",
"currency": "CZK",
"note": "Objednávka e-shopu 004512",
"lines": [
{
"description": "Konzultace",
"quantity": "2",
"unit": "hod",
"unit_price": "1500.00",
"vat_code": "21"
}
]
})
});
const data = await res.json();
{
"id": "e71a3b2c-4d5e-4f60-8a7b-9c0d1e2f3a4b",
"document_type": "FV",
"status": "draft",
"number": null,
"amount_total": "3630.00",
"source": "api",
"version": 1,
"app_url": "https://app.mytempo.cz/doklady/e71a3b2c-4d5e-4f60-8a7b-9c0d1e2f3a4b"
}
Upravit koncept
Připravujeme/companies/{company_id}/documents/{document_id}Změní koncept, který vznikl přes API nebo je ještě nezařazený. Zařazený doklad vrátí 409 document_not_draft.
Rozsah tokenu: documents:write
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
document_iduuidpovinnýIdentifikátor dokladu.
Hlavičky
If-MatchstringpovinnýHodnota ETag / version z posledního načtení záznamu.
Příklad: "7"
Tělo požadavku application/json
due_datedateSplatnost.
notestringPoznámka.
linesarrayŘádky – nahradí všechny řádky.
Odpovědi
- 200 Úspěch – objekt Document
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 404
not_found– Záznam neexistuje, nebo k němu nemáte přístup. - 409
version_conflict / idempotency_conflict– Souběžná změna, opakovaný klíč s jiným obsahem, uzavřené období. - 422
validation_failed– Údaje neprošly kontrolou – podrobnosti verrors.
curl -X PATCH "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/documents/…" \
-H "Authorization: Bearer $TEMPO_TOKEN" \
-H "If-Match: "7"" \
-H "Content-Type: application/json" \
-d '{
"due_date": "2026-11-30"
}'
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/documents/…", {
method: "PATCH",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`,
"If-Match": ""7"",
"Content-Type": "application/json"
},
body: JSON.stringify({
"due_date": "2026-11-30"
})
});
const data = await res.json();
{
"id": "e71a3b2c-4d5e-4f60-8a7b-9c0d1e2f3a4b",
"document_type": "FV",
"status": "draft",
"number": null,
"amount_total": "3630.00",
"source": "api",
"version": 2,
"app_url": "https://app.mytempo.cz/doklady/e71a3b2c-4d5e-4f60-8a7b-9c0d1e2f3a4b"
}
PDF vydané faktury
Beta/companies/{company_id}/documents/{document_id}/pdfTisk vydané faktury, zálohového listu nebo daňového dokladu k platbě ve formátu PDF (stejný jako v aplikaci).
Rozsah tokenu: read
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
document_iduuidpovinnýIdentifikátor dokladu.
Odpovědi
- 200 Úspěch
- 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 404
not_found– Záznam neexistuje, nebo k němu nemáte přístup. - 409
version_conflict / idempotency_conflict– Souběžná změna, opakovaný klíč s jiným obsahem, uzavřené období.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/documents/…/pdf" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/documents/…/pdf", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
(binární soubor application/pdf)
Přílohy a poznámky
Soubory a poznámky u dokladů.
Přílohy dokladu
Beta/companies/{company_id}/documents/{document_id}/attachmentsSeznam příloh s krátkodobou adresou ke stažení (platí 5 minut).
Rozsah tokenu: read
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
document_iduuidpovinnýDoklad.
Odpovědi
- 200 Úspěch
- 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 404
not_found– Záznam neexistuje, nebo k němu nemáte přístup.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/documents/…/attachments" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/documents/…/attachments", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"data": [
{
"id": "a1…",
"file_name": "faktura.pdf",
"mime_type": "application/pdf",
"size": 84211,
"download_url": "https://api.mytempo.cz/v1/files/…",
"download_expires_at": "2026-11-11T10:05:00+01:00"
}
]
}
Přidat přílohu
Připravujeme/companies/{company_id}/documents/{document_id}/attachmentsNahraje soubor k dokladu (multipart/form-data, nejvýš 20 MB). Platí pravidla panelu dokladu (koncept / zařazený / zaúčtovaný).
Rozsah tokenu: documents:write
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
document_iduuidpovinnýDoklad.
Hlavičky
Idempotency-KeystringpovinnýJedinečný klíč požadavku (UUID, číslo objednávky). Opakování se stejným klíčem nic nezaloží podruhé.
Příklad: objednavka-2026-004512
Tělo požadavku multipart/form-data
filebinarypovinnéSoubor (PDF, ISDOC, obrázek…).
descriptionstringPopis přílohy.
Odpovědi
- 201 Úspěch
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 404
not_found– Záznam neexistuje, nebo k němu nemáte přístup. - 413
payload_too_large– Soubor je větší než 20 MB. - 422
validation_failed– Údaje neprošly kontrolou – podrobnosti verrors.
curl -X POST "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/documents/…/attachments" \
-H "Authorization: Bearer $TEMPO_TOKEN" \
-H "Idempotency-Key: objednavka-2026-004512" \
-F "file=@soubor.pdf" \
-F "description=…"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/documents/…/attachments", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`,
"Idempotency-Key": "objednavka-2026-004512"
}
});
const data = await res.json();
{
"id": "a2…",
"file_name": "objednavka.pdf",
"size": 51200
}
Přidat poznámku
Připravujeme/companies/{company_id}/documents/{document_id}/notesPřidá poznámku do panelu dokladu.
Rozsah tokenu: documents:write
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
document_iduuidpovinnýDoklad.
Hlavičky
Idempotency-KeystringpovinnýJedinečný klíč požadavku (UUID, číslo objednávky). Opakování se stejným klíčem nic nezaloží podruhé.
Příklad: objednavka-2026-004512
Tělo požadavku application/json
textstringpovinnéText poznámky (nejvýš 4 000 znaků).
Odpovědi
- 201 Úspěch
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 404
not_found– Záznam neexistuje, nebo k němu nemáte přístup.
curl -X POST "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/documents/…/notes" \
-H "Authorization: Bearer $TEMPO_TOKEN" \
-H "Idempotency-Key: objednavka-2026-004512" \
-H "Content-Type: application/json" \
-d '{
"text": "Zákazník žádá splatnost 30 dní."
}'
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/documents/…/notes", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`,
"Idempotency-Key": "objednavka-2026-004512",
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Zákazník žádá splatnost 30 dní."
})
});
const data = await res.json();
{
"id": "n1…",
"text": "Zákazník žádá splatnost 30 dní.",
"created_at": "2026-11-11T10:00:00+01:00"
}
Saldo a peníze
Neuhrazené pohledávky a závazky a zůstatky peněz napříč firmami.
Neuhrazené pohledávky a závazky
Beta/companies/{company_id}/open-itemsOtevřené položky salda – faktury a zálohové listy, které nejsou plně uhrazené, k datu.
Rozsah tokenu: read
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
Parametry dotazu
sideenumpovinnýreceivable (pohledávky) nebo payable (závazky).
Příklad: receivable
overduebooleanJen po splatnosti.
as_ofdateStav k datu; výchozí dnes.
partner_iduuidJen jeden partner.
limitintegervýchozí 100Počet záznamů na stránku, 1–500.
Příklad: 100
cursorstringHodnota next_cursor z předchozí odpovědi.
Příklad: eyJpZCI6Ijk…
Odpovědi
- 200 Úspěch – objekt OpenItem
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 429
rate_limited– Překročený limit – počkejte podleRetry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/open-items?side=receivable" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/open-items?side=receivable", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"data": [
{
"document_id": "e71a3b2c-4d5e-4f60-8a7b-9c0d1e2f3a4b",
"document_type": "FV",
"number": "FV2026-0142",
"partner": {
"id": "c0d4a7b2-1e3f-4a5b-8c9d-0e1f2a3b4c5d",
"name": "Odběratel a.s."
},
"variable_symbol": "20260142",
"due_date": "2026-10-31",
"days_overdue": 11,
"currency": "CZK",
"amount": "12100.00",
"remaining": "12100.00"
}
],
"next_cursor": null
}
Zůstatky peněz napříč firmami
Beta/cash-balancesZůstatky pokladen a bankovních účtů všech firem v rozsahu tokenu k datu a součet přepočtený na CZK kurzem ČNB.
Rozsah tokenu: read
Parametry dotazu
datedateDatum; výchozí dnes.
company_iduuidJen vybrané firmy (parametr lze opakovat).
Odpovědi
- 200 Úspěch
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 429
rate_limited– Překročený limit – počkejte podleRetry-After.
curl -X GET "https://api.mytempo.cz/v1/cash-balances" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/cash-balances", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"date": "2026-11-11",
"total_czk": "1284530.20",
"items": [
{
"company_id": "9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04",
"company": "Vzor s.r.o.",
"kind": "bank",
"name": "Fio – běžný",
"currency": "CZK",
"balance": "842100.50",
"balance_czk": "842100.50"
}
]
}
Banka
Bankovní účty, výpisy, pohyby a import výpisu ze souboru.
Bankovní účty firmy
Beta/companies/{company_id}/bank-accountsBankovní účty (knihy banky) firmy a stav napojení na banku.
Rozsah tokenu: read
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
Odpovědi
- 200 Úspěch
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 429
rate_limited– Překročený limit – počkejte podleRetry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/bank-accounts" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/bank-accounts", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"data": [
{
"id": "ba1…",
"name": "Fio – běžný",
"account_number": "2900123456/2010",
"currency": "CZK",
"connection": "fio_api",
"last_statement_date": "2026-11-10"
}
]
}
Bankovní výpisy
Beta/companies/{company_id}/bank-statementsVýpisy s počátečním a konečným zůstatkem.
Rozsah tokenu: read
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
Parametry dotazu
bank_account_iduuidBankovní účet.
date_fromdateOd data.
date_todateDo data.
limitintegervýchozí 100Počet záznamů na stránku, 1–500.
Příklad: 100
cursorstringHodnota next_cursor z předchozí odpovědi.
Příklad: eyJpZCI6Ijk…
Odpovědi
- 200 Úspěch
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 429
rate_limited– Překročený limit – počkejte podleRetry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/bank-statements" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/bank-statements", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"data": [
{
"id": "bs1…",
"bank_account_id": "ba1…",
"number": "2026/215",
"date_from": "2026-11-10",
"date_to": "2026-11-10",
"opening_balance": "830000.00",
"closing_balance": "842100.50",
"movements": 4
}
],
"next_cursor": null
}
Pohyby na účtu
Beta/companies/{company_id}/bank-movementsPohyby bankovních účtů. Filtr matched=false vrátí pohyby, které ještě nejsou spárované.
Rozsah tokenu: read
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
Parametry dotazu
bank_account_iduuidBankovní účet.
matchedbooleanJen spárované / nespárované.
date_fromdateOd data.
date_todateDo data.
limitintegervýchozí 100Počet záznamů na stránku, 1–500.
Příklad: 100
cursorstringHodnota next_cursor z předchozí odpovědi.
Příklad: eyJpZCI6Ijk…
Odpovědi
- 200 Úspěch – objekt BankMovement
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 429
rate_limited– Překročený limit – počkejte podleRetry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/bank-movements" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/bank-movements", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"data": [
{
"id": "bm1…",
"bank_account_id": "ba1…",
"date": "2026-11-10",
"amount": "12100.00",
"currency": "CZK",
"counter_account": "123456789/0100",
"variable_symbol": "20260142",
"message": "FV2026-0142",
"matched": false,
"document_id": null
}
],
"next_cursor": "eyJpZCI6Ijk…"
}
Import výpisu ze souboru
Připravujeme/companies/{company_id}/bank-statements/importNahraje výpis ve formátu GPC (ABO) nebo camt.053 (XML). Překrývající se výpis TEMPO odmítne; párování dělá člověk v aplikaci.
Rozsah tokenu: bank:import
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
Hlavičky
Idempotency-KeystringpovinnýJedinečný klíč požadavku (UUID, číslo objednávky). Opakování se stejným klíčem nic nezaloží podruhé.
Příklad: objednavka-2026-004512
Tělo požadavku multipart/form-data
bank_account_iduuidpovinnéBankovní účet.
filebinarypovinnéSoubor výpisu (nejvýš 20 MB).
Odpovědi
- 201 Úspěch
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 409
version_conflict / idempotency_conflict– Souběžná změna, opakovaný klíč s jiným obsahem, uzavřené období. - 413
payload_too_large– Soubor je větší než 20 MB. - 422
validation_failed– Údaje neprošly kontrolou – podrobnosti verrors.
curl -X POST "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/bank-statements/import" \
-H "Authorization: Bearer $TEMPO_TOKEN" \
-H "Idempotency-Key: objednavka-2026-004512" \
-F "bank_account_id=…" \
-F "file=@soubor.pdf"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/bank-statements/import", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`,
"Idempotency-Key": "objednavka-2026-004512"
}
});
const data = await res.json();
{
"batch_id": "ib1…",
"statements": 1,
"movements": 4,
"duplicates_skipped": 0
}
Účetnictví a výkazy
Deník, obraty účtů, rozvaha, výsledovka a přehled DPH – jen čtení.
Účetní deník
Verze 1/companies/{company_id}/journalŘádky deníku za období (jen firmy s účetnictvím).
Rozsah tokenu: read
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
Parametry dotazu
period_iduuidpovinnýÚčetní období; bez zadání aktuální období podle dnešního data.
accountstringJen účet (i syntetika, např. 311).
date_fromdateOd data.
date_todateDo data.
limitintegervýchozí 100Počet záznamů na stránku, 1–500.
Příklad: 100
cursorstringHodnota next_cursor z předchozí odpovědi.
Příklad: eyJpZCI6Ijk…
Odpovědi
- 200 Úspěch
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 429
rate_limited– Překročený limit – počkejte podleRetry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/journal" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/journal", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"data": [
{
"date": "2026-10-17",
"document_id": "e71a3b2c-4d5e-4f60-8a7b-9c0d1e2f3a4b",
"document_number": "FV2026-0142",
"description": "Vedení účetnictví 10/2026",
"account_debit": "311000",
"account_credit": "602100",
"amount": "10000.00"
}
],
"next_cursor": "eyJpZCI6Ijk…"
}
Obraty a zůstatky účtů
Verze 1/companies/{company_id}/account-balancesPočáteční stav, obraty MD / DAL a konečný zůstatek účtů za období (u daňové evidence položky).
Rozsah tokenu: read
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
Parametry dotazu
period_iduuidpovinnýÚčetní období; bez zadání aktuální období podle dnešního data.
date_todateZůstatky k datu uvnitř období.
Odpovědi
- 200 Úspěch
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 429
rate_limited– Překročený limit – počkejte podleRetry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/account-balances" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/account-balances", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"data": [
{
"account": "221001",
"name": "Fio – běžný",
"opening": "512000.00",
"debit": "1420000.00",
"credit": "1089899.50",
"closing": "842100.50"
}
]
}
Rozvaha a výsledovka
Verze 1/companies/{company_id}/reports/{report}Výkaz podle šablony firmy. Těžká sestava – má vlastní nižší limit (30 za hodinu).
Rozsah tokenu: read
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
reportenumpovinnýbalance-sheet (rozvaha) nebo profit-and-loss (výsledovka).
Parametry dotazu
period_iduuidÚčetní období; bez zadání aktuální období podle dnešního data.
date_todateVýkaz k datu.
compare_period_iduuidSrovnávací období (sloupec minulé období).
scopeenumvýchozí shortfull (plný) nebo short (zkrácený).
Odpovědi
- 200 Úspěch
- 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 404
not_found– Záznam neexistuje, nebo k němu nemáte přístup. - 429
rate_limited– Překročený limit – počkejte podleRetry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/reports/…" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/reports/…", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"report": "profit-and-loss",
"date_to": "2026-09-30",
"rows": [
{
"line": "I.",
"name": "Tržby z prodeje výrobků a služeb",
"current": "1250000.00",
"previous": "1104000.00"
}
]
}
Přehled DPH a KH
Verze 1/companies/{company_id}/vat-summaryŘádky přiznání k DPH a oddíly kontrolního hlášení za měsíc nebo čtvrtletí. Jen čtení – podání a XML jen v aplikaci.
Rozsah tokenu: read
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
Parametry dotazu
periodstringpovinnýMěsíc YYYY-MM nebo čtvrtletí YYYY-Qn.
Příklad: 2026-10
Odpovědi
- 200 Úspěch
- 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 404
not_found– Záznam neexistuje, nebo k němu nemáte přístup.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/vat-summary?period=2026-10" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/vat-summary?period=2026-10", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"period": "2026-10",
"lines": [
{
"line": "1",
"base": "250000.00",
"vat": "52500.00"
}
],
"kh": [
{
"section": "A.4",
"documents": 12
}
]
}
Pošta
Přijatá a odeslaná pošta.
Seznam zásilek
Verze 1/companies/{company_id}/mail-itemsPřijatá a odeslaná pošta firmy. Osobní zásilky vidí jen přidělený uživatel, vlastník a správce.
Rozsah tokenu: read
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
Parametry dotazu
directionenumincoming nebo outgoing.
statusstringStav (např. to_process, done).
limitintegervýchozí 100Počet záznamů na stránku, 1–500.
Příklad: 100
cursorstringHodnota next_cursor z předchozí odpovědi.
Příklad: eyJpZCI6Ijk…
Odpovědi
- 200 Úspěch
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 429
rate_limited– Překročený limit – počkejte podleRetry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/mail-items" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/mail-items", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"data": [
{
"id": "m1…",
"number": "P2026/0451",
"direction": "incoming",
"received_date": "2026-11-10",
"sender": "Dodavatel s.r.o.",
"description": "Faktura 2026118",
"status": "to_process",
"assigned_to": "Jana Nováková"
}
],
"next_cursor": "eyJpZCI6Ijk…"
}
Založit přijatou zásilku
Připravujeme/companies/{company_id}/mail-itemsZaeviduje přijatou zásilku se skenem (multipart/form-data). Číslo přidělí TEMPO z řady organizace.
Rozsah tokenu: mail:write
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
Hlavičky
Idempotency-KeystringpovinnýJedinečný klíč požadavku (UUID, číslo objednávky). Opakování se stejným klíčem nic nezaloží podruhé.
Příklad: objednavka-2026-004512
Tělo požadavku multipart/form-data
received_datedatepovinnéDatum přijetí.
senderstringpovinnéOdesílatel.
descriptionstringPopis.
creates_liabilitybooleanVzniká závazek.
filebinarySken.
Odpovědi
- 201 Úspěch
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 422
validation_failed– Údaje neprošly kontrolou – podrobnosti verrors.
curl -X POST "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/mail-items" \
-H "Authorization: Bearer $TEMPO_TOKEN" \
-H "Idempotency-Key: objednavka-2026-004512" \
-F "received_date=…" \
-F "sender=…" \
-F "description=…" \
-F "creates_liability=…" \
-F "file=@soubor.pdf"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/mail-items", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`,
"Idempotency-Key": "objednavka-2026-004512"
}
});
const data = await res.json();
{
"id": "m2…",
"number": "P2026/0452",
"status": "registered"
}
Vytěžování
Nahrání dokladu k vytěžení a stav úlohy.
Nahrát doklad k vytěžení
Připravujeme/companies/{company_id}/extractionsNahraje soubor k vytěžení. Výsledek je návrh konceptu – uloží ho člověk v aplikaci. Platí limity vytěžování firmy.
Rozsah tokenu: extraction:write
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
Hlavičky
Idempotency-KeystringpovinnýJedinečný klíč požadavku (UUID, číslo objednávky). Opakování se stejným klíčem nic nezaloží podruhé.
Příklad: objednavka-2026-004512
Tělo požadavku multipart/form-data
filebinarypovinnéPDF, ISDOC nebo obrázek (nejvýš 20 MB).
document_typestringOčekávaný druh (FP, PO…).
Odpovědi
- 202 Úspěch
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 413
payload_too_large– Soubor je větší než 20 MB. - 429
rate_limited– Překročený limit – počkejte podleRetry-After.
curl -X POST "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/extractions" \
-H "Authorization: Bearer $TEMPO_TOKEN" \
-H "Idempotency-Key: objednavka-2026-004512" \
-F "file=@soubor.pdf" \
-F "document_type=…"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/extractions", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`,
"Idempotency-Key": "objednavka-2026-004512"
}
});
const data = await res.json();
{
"id": "x1…",
"status": "queued"
}
Stav vytěžení
Verze 1/companies/{company_id}/extractions/{extraction_id}Stav úlohy (queued, processing, done, failed) a odkaz na návrh v aplikaci.
Rozsah tokenu: read
Parametry cesty
company_iduuidpovinnýIdentifikátor firmy (z GET /companies).
Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04
extraction_iduuidpovinnýÚloha vytěžení.
Odpovědi
- 200 Úspěch
- 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 404
not_found– Záznam neexistuje, nebo k němu nemáte přístup.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/extractions/…" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/extractions/…", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"id": "x1…",
"status": "done",
"app_url": "https://app.mytempo.cz/vytezovani/x1…"
}
Události
Kanál změn a webhooky.
Kanál změn
Připravujeme/eventsUdálosti od posledního kurzoru (vznik, zařazení, úhrada dokladu, nová pošta…). Uchovávají se 30 dní; nic se neztratí ani při výpadku příjemce.
Rozsah tokenu: read
Parametry dotazu
afterstringKurzor poslední zpracované události.
typesstringTypy událostí čárkou.
Příklad: invoice.paid,mail.received
limitintegervýchozí 100Počet záznamů na stránku, 1–500.
Příklad: 100
Odpovědi
- 200 Úspěch
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 429
rate_limited– Překročený limit – počkejte podleRetry-After.
curl -X GET "https://api.mytempo.cz/v1/events" \
-H "Authorization: Bearer $TEMPO_TOKEN"
const res = await fetch("https://api.mytempo.cz/v1/events", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`
}
});
const data = await res.json();
{
"data": [
{
"id": "ev_10452",
"type": "invoice.paid",
"occurred_at": "2026-11-11T09:12:00+01:00",
"company_id": "9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04",
"object": {
"kind": "document",
"id": "e71a3b2c-4d5e-4f60-8a7b-9c0d1e2f3a4b",
"number": "FV2026-0142"
}
}
],
"next_cursor": "ev_10452"
}
Založit webhook
Připravujeme/webhooksZaregistruje adresu https://, na kterou TEMPO posílá vybrané události podepsané HMAC-SHA256 (Standard Webhooks). Tajemství se zobrazí jen jednou.
Rozsah tokenu: webhooks:manage
Hlavičky
Idempotency-KeystringpovinnýJedinečný klíč požadavku (UUID, číslo objednávky). Opakování se stejným klíčem nic nezaloží podruhé.
Příklad: objednavka-2026-004512
Tělo požadavku application/json
urlstringpovinnéAdresa příjemce (jen https).
eventsarray of stringpovinnéTypy událostí.
company_idsarray of uuidJen vybrané firmy.
Odpovědi
- 201 Úspěch
- 400
bad_request– Chybný požadavek – formát, neznámý parametr. - 401
unauthorized– Chybí, vypršel nebo byl zrušen token. - 403
insufficient_scope / forbidden– Token nemá rozsah, nebo uživatel nemá oprávnění. - 422
validation_failed– Údaje neprošly kontrolou – podrobnosti verrors.
curl -X POST "https://api.mytempo.cz/v1/webhooks" \
-H "Authorization: Bearer $TEMPO_TOKEN" \
-H "Idempotency-Key: objednavka-2026-004512" \
-H "Content-Type: application/json" \
-d '{
"url": "https://hooks.example/tempo",
"events": [
"invoice.paid"
]
}'
const res = await fetch("https://api.mytempo.cz/v1/webhooks", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TEMPO_TOKEN}`,
"Idempotency-Key": "objednavka-2026-004512",
"Content-Type": "application/json"
},
body: JSON.stringify({
"url": "https://hooks.example/tempo",
"events": [
"invoice.paid"
]
})
});
const data = await res.json();
{
"id": "wh1…",
"url": "https://hooks.example/tempo",
"events": [
"invoice.paid"
],
"secret": "whsec_… (jen jednou)"
}
Datové objekty
Pole objektů, které vrací reference. Částky jsou desetinná čísla v textu, data ve formátu YYYY-MM-DD.
Company
| Pole | Typ | Popis |
|---|---|---|
id | uuid | Identifikátor firmy. |
name | string | Název firmy. |
ico | string | IČO. |
dic | string | null | DIČ. |
organization_id | uuid | Organizace, do které firma patří. |
method | enum | accounting (účetnictví) nebo tax_records (daňová evidence). |
vat_payer | boolean | Je ke dnešnímu dni plátce DPH. |
vat_period | enum | null | month nebo quarter – periodicita DPH. |
currency | string | Měna účetnictví (ISO 4217). |
Period
| Pole | Typ | Popis |
|---|---|---|
id | uuid | Identifikátor období. |
name | string | Název, např. 2026. |
date_from | date | První den období. |
date_to | date | Poslední den období. |
status | enum | open, closed (uzavřené) nebo locked (uzamčené). |
Partner
| Pole | Typ | Popis |
|---|---|---|
id | uuid | Identifikátor partnera. |
kind | enum | company (firma) nebo person (osoba). |
name | string | Název nebo jméno a příjmení. |
ico | string | null | IČO. |
dic | string | null | DIČ. |
address | Address | Sídlo: street, city, zip, country (ISO 3166-1 alpha-2). |
email | string | null | E-mail pro doklady. |
bank_accounts | array | Bankovní účty: account_number, bank_code, iban, bic, currency. |
tags | array of string | Štítky. |
version | integer | Verze záznamu pro If-Match. |
updated_at | date-time | Čas poslední změny. |
Document
| Pole | Typ | Popis |
|---|---|---|
id | uuid | Identifikátor dokladu. |
document_type | string | Druh dokladu: FV, FP, ZFV, ZFP, DDPZ, DDPOZ, ID, PO, BA… |
status | enum | draft · registered · booked · locked · cancelled. |
number | string | null | Číslo dokladu (koncept ho nemá – přidělí ho zařazení). |
book | object | Kniha: id, code, name. |
partner | object | null | Partner: id, name, ico. |
issue_date | date | Datum vystavení. |
accounting_date | date | Datum účetního případu. |
taxable_supply_date | date | null | DUZP. |
due_date | date | null | Splatnost. |
variable_symbol | string | null | Variabilní symbol. |
currency | string | Měna dokladu. |
exchange_rate | decimal (text) | null | Kurz (jen u cizí měny). |
amount_base | decimal (text) | Základ celkem. |
amount_vat | decimal (text) | DPH celkem. |
amount_total | decimal (text) | Celkem k úhradě. |
remaining | decimal (text) | null | Zbývá uhradit (jen FV, FP, ZFV, ZFP). |
lines | array of DocumentLine | Řádky – jen v detailu dokladu. |
vat_summary | array | Rekapitulace DPH po sazbách – jen v detailu. |
source | enum | Odkud doklad vznikl: app, api, ai, extraction, recurring, bank_import. |
version | integer | Verze pro If-Match. |
updated_at | date-time | Čas poslední změny. |
app_url | string | Odkaz na doklad v aplikaci. |
DocumentLine
| Pole | Typ | Popis |
|---|---|---|
id | uuid | Identifikátor řádku. |
description | string | Popis. |
quantity | decimal (text) | Množství. |
unit | string | null | Jednotka. |
unit_price | decimal (text) | Cena za jednotku. |
vat_code | string | null | Kód DPH z číselníku firmy. |
vat_rate | decimal (text) | null | Sazba DPH v %. |
amount_base | decimal (text) | Základ řádku. |
amount_vat | decimal (text) | DPH řádku. |
account | string | null | Účet (u účetnictví) – jen čtení. |
tax_category | string | null | Položka daňové evidence – jen čtení. |
dimensions | object | Dimenze řádku (středisko, zakázka…) – kód typu → kód hodnoty. |
OpenItem
| Pole | Typ | Popis |
|---|---|---|
document_id | uuid | Doklad. |
document_type | string | Druh dokladu. |
number | string | Číslo dokladu. |
partner | object | Partner: id, name. |
variable_symbol | string | null | Variabilní symbol. |
due_date | date | Splatnost. |
days_overdue | integer | Počet dní po splatnosti (0 = ve splatnosti). |
currency | string | Měna. |
amount | decimal (text) | Částka dokladu. |
remaining | decimal (text) | Zbývá uhradit. |
BankMovement
| Pole | Typ | Popis |
|---|---|---|
id | uuid | Identifikátor pohybu. |
bank_account_id | uuid | Bankovní účet firmy. |
date | date | Datum pohybu. |
amount | decimal (text) | Částka (příjem kladně, výdaj záporně). |
currency | string | Měna. |
counter_account | string | null | Protiúčet. |
variable_symbol | string | null | VS. |
message | string | null | Zpráva pro příjemce. |
matched | boolean | Je pohyb spárovaný s dokladem. |
document_id | uuid | null | Doklad banky, který pohyb zaúčtoval. |
Problem
| Pole | Typ | Popis |
|---|---|---|
type | string | Odkaz na popis chyby. |
title | string | Krátký název chyby (česky). |
status | integer | Stav HTTP. |
code | string | Stabilní kód chyby – podle něj se řiďte v programu. |
detail | string | Vysvětlení pro člověka (česky). |
errors | array | null | Chyby po polích: field, code, message. |
Chybové kódy
Každá chyba má tvar application/problem+json s poli type, title, status, code, detail a případně errors.
| Stav | Kód | Význam |
|---|---|---|
| 400 | bad_request | Chybný požadavek – formát, neznámý parametr. |
| 401 | unauthorized | Chybí, vypršel nebo byl zrušen token. |
| 403 | insufficient_scope / forbidden | Token nemá rozsah, nebo uživatel nemá oprávnění. |
| 404 | not_found | Záznam neexistuje, nebo k němu nemáte přístup. |
| 409 | version_conflict / idempotency_conflict | Souběžná změna, opakovaný klíč s jiným obsahem, uzavřené období. |
| 413 | payload_too_large | Soubor je větší než 20 MB. |
| 422 | validation_failed | Údaje neprošly kontrolou – podrobnosti v errors. |
| 429 | rate_limited | Překročený limit – počkejte podle Retry-After. |