Přeskočit na hlavní obsah

Limity a kvóty

Počet dotazů do API je omezený tarifem firmy. Kvóta se počítá na straně iÚčta, ale API o ní neposílá žádnou informaci — kolik dotazů zbývá, si musí hlídat vaše integrace sama.

Kvóta dotazů podle tarifu

Kvóta je vázaná na firmu, ne na API klíč. Když má firma víc klíčů, sčítají se dotazy ze všech.

TarifKvóta
Start (zkušební)2 000 / den
Sólo0 — API v tomhle tarifu nefunguje
Firma5 000 / den
Max10 000 / den
Fakturace3 000 / měsíc

Firma bez aktivního tarifu má kvótu 0, stejně jako tarif Sólo — dotazy skončí kódem 402.

Starší tarify

Firmy na tarifech, které se dnes už neprodávají, mají kvótu podle původního zařazení: Start (old) 0, Standard (old) 2 000 / den, Pokročilý (old) 5 000 / den, Premium (old) 10 000 / den.

Jak se dotazy počítají

Do kvóty se počítá každý požadavek, který projde ověřením klíče — tedy i ten, který pak skončí chybou 400 nebo 404. Neúspěšný dotaz kvótu ubírá stejně jako úspěšný.

  • Denní počitadlo se nuluje o půlnoci v čase Evropa/Praha.
  • Měsíční počitadlo se nuluje prvního dne v měsíci.
  • Odmítnutý dotaz s kódem 401 (neplatný klíč) se do kvóty nepočítá.

Vyčerpaná kvóta

Po vyčerpání kvóty vrací API kód 402 Payment Required s holým textem v těle. Hláška zní Překročen limit na počet dotazů v API, zkontrolujte aktivní tarif. a za ní jsou dvě čísla: dnešní využití a využití za měsíc.

"Překročen limit na počet dotazů v API, zkontrolujte aktivní tarif. Dnešní využití: 2001, za měsíc: 14320"
Backoff si spočítejte podle vlastního počitadla

API neposílá X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset ani Retry-After a nikdy nevrací kód 429. Backoff řízený hlavičkami odpovědi tedy postavit nejde — jediný signál je 402 a číslo v textu hlášky, které se pro rozhodování používat nemá. Kolik dotazů zbývá, si musí integrace počítat sama a plánovat podle časů nulování počitadel.

Opakovat požadavek hned nemá smysl. Do resetu počitadla nebo do změny tarifu bude odpověď stejná.

Limit dokladů na zkušebním tarifu

Kvóta dotazů není jediný strop, na který se dá na tarifu Start narazit. Zkušební tarif má navíc limit počtu zaúčtovaných dokladů — ve výchozím nastavení 50. Jakmile jich firma tolik má, vrátí POST i PUT na kterýkoli dokladový zdroj kód 402 s hláškou:

"Využíváte verzi zdarma s limitem 50 dokladů. Chcete-li pokračovat, zvolte některou z placených variant provozu iÚčta."

Počítají se jen doklady zaúčtované, napříč všemi typy. Nezaúčtované se do limitu nepočítají, takže dokladů může být víc, dokud je nezaúčtujete.

Týká se to i testování

Zkušební firma, kterou doporučujeme na testování, běží právě na tarifu Start. Zátěžový test na dvě stě dokladů tedy neprojde — na padesátém prvním zaúčtovaném dokladu začne API vracet 402, i když má kvóta dotazů daleko do vyčerpání. Ta hláška vypadá jako problém s tarifem, ale je to tenhle strop.

Kontrola běží na dvou místech: při vytvoření a editaci dokladu a znovu při jeho zaúčtování. Limit patří tarifu, ne API — stejně se chová i zakládání dokladů v aplikaci.

Zkušební tarif má ještě jedno omezení, které se přes API projeví až chybou: zaúčtovat na něm jde jen doklad s datem vystavení v aktuálním roce. Doklad loňským datem projde při vytvoření, ale /account ho odmítne.

Limity požadavků

CoLimitPři překročení
pageSize u seznamůvýchozí 50, maximum 200chyba 400
Velikost přílohy5 MBchyba 413
Velikost skenu došlého dokladu4 MBchyba 400
Počet upomínek na faktuře4chyba 400

Limity příloh a skenů se liší a chovají se jinak — příloha nad limit vrací 413, sken nad limit vrací 400 s tělem tvaru {"file": "…"}. Není to překlep, jsou to dvě různé cesty v aplikaci.

Detaily k upomínkám jsou v sekci Upomínky, k parametrům seznamů v Stránkování, řazení a filtry.

Jak dotazy šetřit

Kvóta se nejrychleji vyčerpá na dotazech, které nic nepřinesou. Čtyři opatření, která obvykle stačí:

  • Číselníky cachujte. Načtěte je jednou při startu aplikace, ne před každým dokladem — které se dají zapsat rovnou do kódu a které se musí číst z API, rozebírají Číselníky.
  • Listujte po dvou stech. Průchod 10 000 fakturami po padesáti stojí 200 dotazů, po dvou stech 50. page a pageSize ale musí dorazit spolu, jinak se úspora nekoná — viz Stránkování.
  • Nestahujte detail, když stačí seznam. Seznamy vrací podmnožinu polí detailu; když integrace potřebuje jen číslo dokladu, částku a stav úhrady, je dotaz na GET /invoice_issued/{id} zbytečný. Která pole navíc detail přidává, je u každého zdroje v referenci.
  • Stahujte jen změněné záznamy. S ?sort=-modified jde přestat listovat, jakmile narazíte na záznam starší než vaše poslední synchronizace. Které zdroje to umí, vyjmenovává Podle čeho jde řadit.

Kam dál