Přeskočit obsah
P
API pro partnery
Napojení vlastní aplikace — přístup, autentizace a endpointy
API pro partnery / Limity a CORS

Limity a CORS#

Omezení počtu požadavků#

Platí tři vrstvy: limity aplikace, limity volajícího pod nimi a zvláštní limity na vybraných citlivých endpointech.

Limity pro aplikaci#

Každý klíč aplikace má vlastní limity: krátké okno za sekundu a delší za minutu. Výchozí hodnoty jsou 20 za sekundu a 600 za minutu; provozovatel je u konkrétního klienta může nastavit jinak.

Limit aplikace sdílejí všichni její uživatelé

Překročí-li aplikace svůj limit, jsou odmítnuti všichni její uživatelé, dokud okno neskončí. Jeden přetížený uživatel (nebo chybná smyčka) tedy může zastavit celou aplikaci. Proto existují limity volajícího.

Limity volajícího#

Pod stropem aplikace platí limit na volajícího, aby jeden volající nevyčerpal celou kapacitu:

Volající Počítá se podle Výchozí limit
přihlášený uživatel účtu z tokenu 120 za minutu
nepřihlášený (bez tokenu) adresy IP 120 za minutu

Podle adresy se počítají i veřejné akce, které token nečtou (přihlášení, obnova tokenu, zapomenuté heslo) — i když token pošlete. Administrátor webu může oba limity u aplikace změnit.

Neplatný token na limit volajícího nedojde

Neplatný nebo vypršelý token skončí chybou 401 dřív, než se limit volajícího počítá. Limit aplikace se ale započítá i tak.

Okna a překročení#

Okna jsou pevná: s novou sekundou, respektive minutou začíná nové okno a počítadlo se vynuluje. Překročený limit (aplikace i volajícího) vrací HTTP 429, hlavičku Retry-After s počtem sekund do konce okna a tělo:

{"success":false,"message":"Too many requests.","data":{"retryAfter":3},"code":404}

code 404 je kód výsledku RATE_LIMIT_EXCEEDED, ne stavový kód HTTP. data.retryAfter nese totéž číslo jako hlavička. Klient má počkat Retry-After sekund a teprve pak opakovat.

Zvláštní limity endpointů#

Platí navíc k limitům výše — přihlášení, obnova tokenu, obnova hesla, odhalení telefonu, zakládání obsahu a další. Limit není globální, tyto platí jen na vybrané citlivé endpointy.

Endpoint Klíč Limit Po překročení
auth/login jméno a adresa, jen neúspěšné pokusy 5 za 5 minut 429 s Retry-After, kód 404
auth/login účet ze všech adres, jen neúspěšné pokusy 20 za hodinu 429 s Retry-After, kód 404
auth/refresh adresa, každý pokus 30 za 5 minut 429 s Retry-After, kód 404
user/update-password účet, jen špatné současné heslo 5 za 5 minut HTTP 200, kód 404
user/show-phone adresa 20 za hodinu HTTP 200, prázdný phone
user/send-new-password adresa / uživatel 10 za hodinu / 3 za hodinu HTTP 200, stejná odpověď jako při úspěchu
user/reset-password adresa 10 za hodinu HTTP 200, kód 112
user/send-activation-email adresa / uživatel 10 za hodinu / 3 za hodinu HTTP 200, stejná odpověď jako při úspěchu

Limit přihlášení a obnovy tokenu vrací HTTP 429, hlavičku Retry-After a tělo se stejnými klíči, jen zpráva nese i počet sekund:

{"success":false,"message":"Too many requests, retry in 240s","data":{"retryAfter":240},"code":404}

Rozhodujte podle code a data.retryAfter, ne podle textu zprávy.

Přihlášení z neznámého zařízení

Limit 20 za hodinu na účet a limity na dvojice (jméno nebo účet, adresa) platí plně jen pro neznámé zařízení: nad limitem se heslo vůbec neověřuje a klient dostane stejné 429 jako dřív. Prohlížeč, který se k účtu už přihlásil, je rozpoznán podepsanou cookie webu, a adresa s úspěšným přihlášením v posledních 30 dnech projde přes limit účtu. Externí volání auth/login cookie neposílá, takže je vždy neznámé zařízení; pomoci mu může jen adresa, ze které se účet nedávno úspěšně přihlásil. Integrace proto nemá při zablokovaném účtu čekat na uvolnění z jiné adresy: má se řídit hlavičkou Retry-After.

Odpověď při zaškrcení nesmí prozradit víc než odpověď při průchodu

Proto „zapomenuté heslo“ vrací při limitu stejný úspěch jako bez něj a obnova hesla týž kód jako neplatný klíč. Jen přihlášení a obnova tokenu hlásí limit stavovým kódem 429.

Kvóta zakládání obsahu#

Zakládání vybraného obsahu má horní mez počtu za hodinu. Platí stejně pro web i pro externí save s tokenem.

Co Klíč Limit
odpověď na inzerát a na firemní profil, příspěvek a nahlášení v diskuzi, komentář, nahlášení inzerátu, kontaktní zpráva — přihlášený uživatel uživatel / adresa, zvlášť pro každý druh obsahu 30 za hodinu / 60 za hodinu
kontaktní zpráva — nepřihlášený návštěvník e-mail z formuláře / adresa 5 za hodinu / 20 za hodinu
aktivační e-mail odběru novinek adresa / e-mail 10 za hodinu / 3 za hodinu

Počítá se jen vložení, úprava ne. Nad limitem vrátí save HTTP 200, success: false a kód 404 se zprávou Too many new records, try again later. — bez hlavičky Retry-After. Administrátor kvótě nepodléhá.

Na běžné čtení a zápis platí jen limity aplikace a volajícího

Zvláštní limit nemají. Neznamená to ale, že si můžete dovolit cokoli — velké includes a časté dotazy zatíží server stejně.

Neúspěšná přihlášení se počítají, úspěšná ne

Správně přihlášený klient na limit nenarazí.

CORS#

Týká se jen volání z prohlížeče. Požadavek ze serveru CORS neomezuje.

Nastavení Hodnota
Povolené původy seznam, výchozí jen místní adresy pro vývoj
Metody GET, POST, PUT, PATCH, DELETE, OPTIONS
Hlavičky Authorization, X-API-Key, Content-Type, X-Requested-With, Accept
Zveřejněné hlavičky žádné
Přihlašovací údaje povoleny
Platnost předběžného dotazu 1 hodina

X-API-Key je povolená hlavička

Předběžný dotaz prohlížeče ji povoluje. Klíč vložený do skriptu v prohlížeči ale není tajný — viz Autentizace.

Vaše doména musí být na seznamu

Není-li tam, server odpoví, ale prohlížeč odpověď zahodí. Vypadá to jako výpadek API. Požádejte provozovatele o zapsání domény.

Retry-After z prohlížeče nepřečtete

Hlavička není zveřejněná. Při limitu tedy v prohlížeči nezjistíte, jak dlouho čekat — počítejte s vlastním odstupem. Tělo odpovědi ale nese data.retryAfter.

Předběžný dotaz#

Dotaz metodou OPTIONS se odbaví ještě před autentizací a vrátí 204. Při nepovoleném původu vrátí 204 bez povolovací hlavičky.

Doporučení pro klienta#

Při 429 čekejte Retry-After sekund

Opakování hned limit jen prodlouží. Nemáte-li hlavičku k dispozici (prohlížeč), čekejte s narůstajícím odstupem.

Token obnovujte předem, ne až na 401

Přístupový token platí 15 minut. Obnova s minutovým předstihem ušetří zbytečné neúspěšné požadavky.

Nepoužívejte includes=*

Nejrychlejší způsob, jak si zpomalit vlastní integraci.

Nastavení cookies