Proč se API pro obrázky účtuje v coinech (a samo si vrací peníze)
Autor: Tým Fellowi · · 5 min čtení

Když jsme nad Fellowi Images stavěli veřejné API, museli jsme udělat několik rozhodnutí, která se v dokumentaci neobjeví jako funkce - projeví se jako absence problémů. Tohle je úvaha, která za nimi stojí: proč se účtuje v coinech, co se stane, když generace selže, a proč pár čísel v dokumentaci (limity požadavků, dny uchování) znamená méně, než jak vypadají.
Coiny, ne předplatné
Generování obrázku má reálnou, proměnlivou cenu za každé volání. Plošné měsíční předplatné buď přeplatí toho, kdo vytvoří pět obrázků za měsíc, nebo naopak nedoplatí u toho, kdo jich vytvoří pět set - neexistuje počet míst ani kvóta požadavků, která by na to čistě sedla. Coiny nechají cenu jít přímo za používáním: platíš přesně to, co skutečně vygeneruješ, a nic navíc. Coinům nikdy nevyprší platnost a není co rušit, takže tu není ani fakturační cyklus, který by se dal propásnout - kup si balíček, když ho potřebuješ, a do té doby ti prostě leží v peněžence.
Neúspěšná generace si vrátí peníze sama
Pokud generace vyprší časem nebo je odmítnuta ještě předtím, než vznikne obrázek, coiny, které jsi na ni vydal, se vrátí automaticky a okamžitě. Není to ticket, který musíš zakládat na podpoře - je to vlastnost systému: nikdy nezaplatíš za obrázek, který jsi nedostal. Bereme to jako záruku spolehlivosti, ne jako laskavost.
Každé selhání se rozpadne přesně do jednoho ze čtyř kódů, záměrně krátkého seznamu:
- TIMEOUT - generace trvala příliš dlouho a byla opuštěna.
- MODERATION_REJECTED - požadavek porušil pravidla pro obsah.
- VENDOR_ERROR - něco selhalo výš, na straně generování.
- UNKNOWN - poctivý zbytkový kód pro vše, co se nevejde do ostatních tří.
Malá, pevná sada kódů je vědomá volba - na tohle se dá skutečně napsat příkaz switch, místo porovnávání vzorů proti volně formulovaným chybovým textům, které se ti můžou pod rukama změnit.
Obrázky vyprší po 30 dnech
Bajty vygenerovaného obrázku držíme 30 dní. Potom záznam o generaci v historii dál existuje - endpoint se seznamem pořád ukazuje, že se stala, kdy a kolik stála - ale stažení samotného obsahu obrázku vrátí HTTP 410 Gone. Je to obyčejný, nijak skrývaný kompromis kolem nákladů na úložiště: jestli chceš obrázek podržet dál než 30 dní, stáhni si ho a ulož u sebe. Záznam o generaci nikdy potichu nemažeme, jen bajty.
Limity požadavků nejsou skutečný strop
Minutový limit požadavků na tvém API klíči (ve výchozím nastavení 20 požadavků za minutu na generování a 120 na čtení) existuje proto, aby tlumil zneužití, ne aby byl tím, co reálně určuje, kolik obrázků zvládneš vytvořit. Skutečným stropem je tvůj zůstatek Fellowi Coins - když coiny máš, můžeš je utratit, až po tuhle rychlost. Jestli chceš přísnější rozpočet, než ti zůstatek dovoluje, klíč může nést i volitelný denní limit coinů, který si nastavíš sám - pro tvoji vlastní kontrolu nákladů, ne pro naši.
Klíče, které už nezískáš zpět
API klíč se ti zobrazí přesně jednou, při vytvoření. Potom u nás zůstane jen jeho hash a krátký náhled - stejný postoj, jaký máme ke každému jinému tajemství v produktu. Když klíč ztratíš, vygeneruješ nový; neexistuje žádné obnovení, protože na naší straně není nic, co by ho dokázalo obnovit.
Stejná peněženka, stejná cena
API i webová aplikacečerpají z přesně stejného zůstatku Fellowi Coins, za přesně stejnou cenu podle úrovně kvality - 40 coinů za Standard, 60 za vysokou kvalitu. Žádné oddělené “ceny pro API” neexistují. Je to záměr: tvoje cena je předvídatelná bez ohledu na to, kterými dveřmi generuješ.
Konkrétní podobu požadavků a odpovědí i funkční ukázky kódu najdeš v našem rychlém startu s API, nebo zajdi přímo do API Console a vytvoř si klíč.