REST API zdarma nad vším, co tu hostujeme: vyhledávání, populární, kategorie, našeptávač a hlášení sdílení. Bez registrační zdi a bez placeného tarifu.
Tvar odpovědi přesně odpovídá starému v2 GIF API, kterému už umí rozumět velká část existujících klientů, a to včetně jeho zvláštností: flags je řetězec oddělený čárkami, created je desetinné číslo v unixových sekundách a formát, který nemáme, v media_formats úplně chybí, místo aby přišel jako null. Pokud tvoje aplikace 30. června 2026 přestala fungovat, celá migrace je většinou jen změna základní adresy.
Základní adresa
https://gifs.appmaxx.io/api/v2
Společný demo klíč
01
Rychlý start
Jeden request, žádná registrace. Společný demo klíč níž funguje hned a je omezený na 2 requesty za sekundu a 2000 za den.
Klíč posílej buď jako parametr key, nebo jako hlavičku Authorization: Bearer. Klíč vypadá jako amxg_ a 40 znaků: prvních 8 je veřejný prefix, který klíč identifikuje, zbylých 32 je tajná část. Ukládáme jenom hash celého klíče, takže ztracený klíč nejde obnovit, jen vydat nový.
Je veřejný záměrně. Hodí se na zkoušení a do příkladů, ne do aplikace s uživateli.
Pro vlastní klíč s reálnými limity napiš na ahoj@appmaxx.io jméno aplikace a přibližný počet requestů za den. Je to zdarma.
API nikdy nečte cookies a nepoužívá tvoje přihlášení. Právě proto se dá volat z jakékoli domény.
03
Limity
Platí dva limity: krátkodobý limit za sekundu a denní kvóta, která přežije restart. Každá úspěšná odpověď říká, jak na tom jsi.
Hlavička
Význam
X-RateLimit-Limit
Tvoje denní kvóta.
X-RateLimit-Remaining
Kolik requestů dnes ještě zbývá.
X-RateLimit-Reset
Unixový čas, kdy se kvóta obnoví, tedy o půlnoci UTC.
Retry-After
Posílá se jen s chybou 429. Počet sekund, než to zkusíš znovu.
Čtecí endpointy odpovídají s public, max-age=60, s-maxage=300, takže cache před tvojí aplikací tě nestojí nic z kvóty. registershare se necachuje nikdy.
04
Endpointy
GET/api/v2/search
Fulltextové vyhledávání tolerantní k překlepům, řazené podle relevance a pak podle popularity. Vyžaduje q.
Vrací
next, results[]
Parametry
q, limit, pos, media_filter, contentfilter, ar_range, random, locale, country, client_key
Seznamové endpointy vracejí obálku s next a results. Hodnotu next pošli zpátky jako pos pro další stránku a skonči, až bude prázdný řetězec, který dostaneš místo null. Kurzory jsou podepsané a vázané na dotaz, který je vytvořil, takže kurzor použitý na jiný dotaz skončí čistou chybou 400, a ne stránkou nesouvisejících výsledků.
Dva endpointy se záměrně odchylují, protože stejně to dělalo i API, které nahrazujeme: categories vrací tags místo results a posts nevrací next vůbec.
Tři endpointy pro výrazy vracejí ploché pole řetězců, ne objekty odpovědi.
Neprůhledné id. Vrací se přes posts a registershare.
title
string
Krátký titulek. Může být prázdný.
content_description
string
Popis pro lidi, vhodný jako alt text.
media_formats
object
Varianty médií podle jména formátu.
created
float, unix seconds
Čas nahrání v unixových sekundách.
hasaudio
boolean
Jestli měl zdroj zvukovou stopu.
hascaption
boolean
Jestli je text vypálený do obrázku. Zatím vždy false.
flags
string, comma separated
Odděleno čárkami: prázdné, sticker, static nebo sticker,static.
bg_color
string
Dominantní barva, použitelná jako podklad před načtením.
tags
string[]
Tagy, malými písmeny.
itemurl
string
Adresa stránky se sdílením včetně čitelného slugu.
url
string
Krátká adresa stránky se sdílením.
Objekt media
url
string
Přímá adresa média. Jde hotlinkovat, je immutable a podporuje Range.
dims
[width, height]
Šířka a výška v pixelech.
duration
float, seconds
Délka v sekundách. 0 u statických.
size
integer, bytes
Velikost v bajtech.
preview
string
Statický obrázek k této variantě. Vždy řetězec.
Klíče formátů
gif
mediumgif
tinygif
nanogif
mp4
tinymp4
webm
webp
preview
Každý klíč níž je v media_formats tehdy, když danou variantu máme, a jinak tam není. Přes media_filter si vyžádej jen podmnožinu a odpovědi zůstanou malé.
06
Přehled parametrů
Parametr
Typ
Výchozí
Význam
key
string
required
Tvůj API klíč. Povinný na každém endpointu.
q
string
-
Hledaný dotaz.
id
string
-
Jedno id objektu odpovědi.
ids
string, comma separated, max 50
-
Id objektů odpovědi k dohledání, v pořadí.
limit
integer 1-50
20
Kolik výsledků vrátit.
pos
cursor from next
-
Hodnota next z předchozí odpovědi.
media_filter
comma separated, or minimal / basic
all
Které klíče formátů zahrnout. Bere i sady minimal a basic.
contentfilter
off | low | medium | high
off
Jak přísně filtrovat obsah. Obsah pro dospělé navíc vyžaduje klíč, který ho má povolený.
ar_range
all | wide | standard
all
Okno poměru stran. standard je 0.56 až 1.78, wide je 0.42 až 2.36.
random
boolean
false
Zamíchat výsledky místo řazení.
type
featured | trending | emoji
featured
Který seznam kategorií vrátit. Emoji kategorie nemáme, takže ten typ odpoví prázdným seznamem.
locale
xx or xx_YY
en_US
Preferovaná lokalizace. Přijímáme ji, zatím se ale projeví jen v cestách kategorií.
country
ISO 3166-1 alpha-2
-
Kód země. Přijímáme kvůli kompatibilitě.
client_key
string
-
Tvůj vlastní identifikátor volající aplikace. Přijímáme kvůli kompatibilitě.
07
Chyby
Chyby používají stejnou obálku jako API, které nahrazujeme, takže existující ošetření chyb funguje dál. Pole details je vždycky přítomné a vždycky prázdné.
HTTP
Status
Význam
400
INVALID_ARGUMENT
Parametr chybí, neznáme ho, nebo je mimo rozsah.
401
UNAUTHENTICATED
Nepřišel žádný klíč.
403
PERMISSION_DENIED
Klíč neznáme, je zneplatněný nebo má špatný formát.
404
NOT_FOUND
Objekt s tímto id neexistuje.
429
RESOURCE_EXHAUSTED
Vyčerpaný krátkodobý nebo denní limit. Viz Retry-After.
Nasměruj klienta na základní adresu výš a vyměň klíč. Jeden rozdíl je dobré znát: naše id jsou neprůhledné alfanumerické řetězce, ne čísla, takže kód, který id parsuje jako celé číslo, potřebuje opravit. Jména endpointů, parametrů a polí jsou jinak stejná, registershare včetně.
09
oEmbed
K dispozici je i oEmbed provider na /api/oembed pro všechno, co umí oEmbed, tedy třeba Slack, WordPress nebo Discourse. Adresu stránky se sdílením pošli jako url. Klíč nepotřebuje.