REST API · v1

Dokumentácia API MakeFav

Generujte kompletné balíky faviconov z vlastného kódu, build skriptov a CI pipeline. Jedna požiadavka premení akýkoľvek obrázok na favicon.ico, Apple touch icony, ikony pre Android a PWA, web manifest a HTML pripravené na vloženie.

Na tejto stránke

Rýchly štart

API MakeFav je jednoduché REST API s protokolom HTTPS a formátom JSON. Všetky endpointy sú pod jednou základnou URL:

https://makefav.com/api/v1
  1. Vytvorte si bezplatný účet
    Zaregistrujte sa, potvrďte svoju e-mailovú adresu a ponechajte aktívny odber newslettera MakeFav – to je jediná podmienka bezplatného plánu.
  2. Vytvorte API kľúč
    Otvorte stránku API kľúčov vo svojom účte a vytvorte osobný kľúč. Začína sa predponou mf_ a zobrazí sa iba raz, preto ho uložte na bezpečné miesto. Spravovať API kľúče
  3. Odošlite prvú požiadavku
    Nahrajte obrázok na endpoint generate a uložte vrátený súbor ZIP:
curl --fail-with-body -sS https://makefav.com/api/v1/generate \
  -H "Authorization: Bearer $MAKEFAV_API_KEY" \
  -F "[email protected]" \
  -F "app_name=My App" \
  -F "theme_color=#2f9e68" \
  -F "radius=20" \
  -o favicons.zip

Unzip favicons.zip, upload the files to your website and paste the HTML code from the end of readme-makefav.txt into the <head> of every page.

Autentifikácia

Každá požiadavka na chránený endpoint musí obsahovať osobný API kľúč. Kľúče môžete kedykoľvek vytvárať, pomenúvať a rušiť na stránke svojho účtu: API kľúče

Send the key as a bearer token in the Authorization header, or – if your HTTP client makes that awkward – in the X-API-Key header. Both are equivalent.

Authorization: Bearer mf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

# or, alternatively
X-API-Key: mf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Kľúče patria používateľovi, ktorého e-mailová adresa je potvrdená a ktorý má aktívny odber newslettera (podmienka bezplatného plánu). Ak e-mail nie je potvrdený, newsletter je vypnutý alebo je účet zablokovaný, každá požiadavka vráti chybu 403 Forbidden.
S API kľúčmi zaobchádzajte ako s heslami: uchovávajte ich na serveri alebo v tajomstvách CI, nikdy nie v kóde prehliadača, mobilných aplikáciách ani vo verejných repozitároch. Ak kľúč unikne, okamžite ho zrušte.

Missing or invalid keys return 401 Unauthorized. The GET /sizes and GET /openapi.json endpoints do not require a key.

Limity požiadaviek

V predvolenom nastavení môže každý API kľúč odoslať 100 požiadaviek za hodinu. Každá overená odpoveď vás informuje o aktuálnom stave:

HlavičkaPopis
X-RateLimit-LimitMaximálny počet požiadaviek povolených v aktuálnom okne.
X-RateLimit-RemainingZostávajúce požiadavky v aktuálnom okne.
X-RateLimit-ResetUnixová časová pečiatka (sekundy, UTC), kedy sa okno obnoví.
HTTP/1.1 200 OK
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 97
X-RateLimit-Reset: 1767225600

When the limit is exceeded the API responds with HTTP 429 and the error code rate_limited. Wait until the time in X-RateLimit-Reset before retrying – do not retry in a tight loop.

HTTP/1.1 429 Too Many Requests
Content-Type: application/json
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1767225600

{"error": {"code": "rate_limited", "message": "Rate limit exceeded. Try again after the reset time."}}

You can check your current quota at any time with GET /me.

Endpointy

EndpointAutentifikáciaPopis
POST /generateAPI kľúčVytvorí kompletný balík faviconov.
GET /meAPI kľúčVáš účet a aktuálny stav limitu požiadaviek.
GET /sizesŽiadneZoznam všetkých súborov ikon a veľkostí, ktoré generátor vytvára.
GET /openapi.jsonŽiadneStrojovo čitateľná špecifikácia OpenAPI 3.1.

Vygenerovať balík favicon

POST/generate

Vytvorí kompletný balík favicon z jedného zdrojového obrázka. Obrázok môžete odoslať jedným z troch spôsobov:

Typ obsahuPole obrázkaPopis
multipart/form-dataimageNahratie súboru. Odporúčané – najefektívnejšia možnosť.
application/jsonimage_base64Base64-encoded image, either raw base64 or a data URL such as data:image/png;base64,iVBOR….
application/jsonimage_urlVerejná URL adresa obrázka (http alebo https). Server si ho stiahne (max. 10 MB).

Podporované vstupné formáty: PNG, JPG, WebP, AVIF, GIF, BMP, SVG a ICO. Maximálna veľkosť súboru: 10 MB.

Parametre

Všetky parametre sú voliteľné. Odošlite ich ako polia formulára (multipart) alebo ako vlastnosti JSON. Neplatné hodnoty sa nahradia predvolenými.

MenoTyp / rozsahPredvolená hodnotaPopis
app_namereťazec, max. 60 znakovMy WebsiteNázov vášho webu alebo aplikácie, používa sa v manifest.json a v ukážkovej stránke.
short_namereťazec, max. 24 znakovprvých 12 znakov z app_nameKrátky názov zobrazený pod ikonou na domovskej obrazovke Androidu.
theme_color#rrggbb#ffffffFarba rozhrania prehliadača (meta tag theme-color a manifest).
tile_color#rrggbbrovnaká ako theme_colorFarba pozadia dlaždíc Windows v ponuke Štart.
backgroundtransparent | #rrggbbtransparentPozadie ikon pre prehliadač, Android a Windows.
apple_background#rrggbb#ffffffPozadie ikon Apple touch a maskable ikony (iOS nepodporuje priehľadnosť). Ak je pozadie farba, ignoruje sa a použije sa táto farba.
paddingcelé číslo, 0–40 (%)0Prázdne miesto okolo obrázka v percentách veľkosti ikony.
radiuscelé číslo, 0–50 (%)0Zaoblené rohy. Hodnota 50 vytvorí kruh. Neuplatňuje sa na ikony Apple, ktoré iOS zaoblí samo.
zoomcelé číslo, 50–400 (%)100Mierka obrázka v ikone. Hodnoty nad 100 obrázok orežú.
offset_x, offset_yčíslo, -1 až 10Posunie obrázok vodorovne / zvisle, ako zlomok veľkosti ikony.
pathreťazec/Priečinok na vašom serveri, kde budú ikony uložené. Používa sa vo fragmente HTML, v manifeste a v browserconfig.
displaystandalone | fullscreen | minimal-ui | browserstandaloneRežim zobrazenia PWA zapísaný do manifestu.
pixelatedauto | 1 | 0autoOstré škálovanie metódou najbližšieho suseda pre pixel art. Hodnota auto ho zapne pre zdroje do 64 px.
maskable1 | 01Vytvorí aj maskable-icon-512x512.png s ochranným okrajom pre adaptívne ikony Androidu.
ico_sizeszoznam oddelený čiarkami z 16, 24, 32, 48, 64, 128, 25616,32,48Veľkosti vložené do favicon.ico.
groupszoznam oddelený čiarkami z favicon, apple, android, msfavicon,apple,android,msSady ikon na vygenerovanie: favicony pre prehliadače, ikony Apple touch, ikony Android / PWA a dlaždice Windows.
formatzip | jsonzipFormát odpovede – pozrite nižšie.

Odpoveď

format=zip
Binary ZIP archive with Content-Type: application/zip and Content-Disposition: attachment. Default.
format=json
JSON object with the package id (32 hex characters), the html snippet for your <head> and a files array; each file has name, mime, size (bytes) and base64 contents.

Príklad požiadavky – multipart, odpoveď vo formáte ZIP

curl --fail-with-body -sS https://makefav.com/api/v1/generate \
  -H "Authorization: Bearer $MAKEFAV_API_KEY" \
  -F "[email protected]" \
  -F "app_name=My App" \
  -F "theme_color=#2f9e68" \
  -F "radius=20" \
  -o favicons.zip
HTTP/1.1 200 OK
Content-Type: application/zip
Content-Disposition: attachment
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 99
X-RateLimit-Reset: 1767225600

<binary ZIP data>

Príklad požiadavky – JSON s URL obrázka, odpoveď vo formáte JSON

curl --fail-with-body -sS https://makefav.com/api/v1/generate \
  -H "Authorization: Bearer $MAKEFAV_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "image_url": "https://example.com/logo.png",
    "app_name": "My App",
    "theme_color": "#2f9e68",
    "radius": 20,
    "groups": "favicon,apple,android",
    "format": "json"
  }'
{
  "id": "9f86d081884c7d659a2feaa0c55ad015",
  "html": "<link rel=\"apple-touch-icon\" sizes=\"57x57\" href=\"/apple-icon-57x57.png\">\n…\n<meta name=\"theme-color\" content=\"#2f9e68\">",
  "files": [
    {"name": "favicon.ico", "mime": "image/x-icon", "size": 15086, "base64": "AAABAAMAEBAAAAEAIABoBAAANgAAACAg…"},
    {"name": "favicon-16x16.png", "mime": "image/png", "size": 612, "base64": "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQ…"},
    {"name": "manifest.json", "mime": "application/json", "size": 1094, "base64": "ewogICAgIm5hbWUiOiAiTXkgQXBwIiwK…"}
  ]
}

Získať váš účet

GET/me

Vráti používateľa, ku ktorému kľúč API patrí, a aktuálny stav limitu požiadaviek. Hodí sa na overenie kľúča. Vyžaduje autentifikáciu; bez parametrov.

Príklad požiadavky

curl -sS https://makefav.com/api/v1/me \
  -H "Authorization: Bearer $MAKEFAV_API_KEY"

Príklad odpovede

{
  "id": 1,
  "email": "[email protected]",
  "name": "Jane Doe",
  "rate_limit": {"limit": 100, "remaining": 97, "reset": 1767225600}
}

Zoznam veľkostí ikon

GET/sizes

Returns every icon file the generator can produce, with its pixel size and group. No authentication and no parameters. The group value matches the groups parameter of POST /generate.

Príklad požiadavky

curl -sS https://makefav.com/api/v1/sizes

Príklad odpovede

{
  "files": [
    {"name": "favicon-16x16.png", "size": 16, "group": "favicon"},
    {"name": "favicon-32x32.png", "size": 32, "group": "favicon"},
    {"name": "apple-touch-icon.png", "size": 180, "group": "apple"},
    {"name": "android-icon-192x192.png", "size": 192, "group": "android"},
    {"name": "ms-icon-144x144.png", "size": 144, "group": "ms"}
  ]
}

Špecifikácia OpenAPI

GET/openapi.json

Vráti popis tohto API vo formáte OpenAPI 3.1. Bez autentifikácie. Importujte ho do Postmana, Insomnie alebo Swagger UI, alebo ho použite na vygenerovanie typovaného klienta pre váš jazyk.

curl -sS https://makefav.com/api/v1/openapi.json -o makefav-openapi.json

Chyby

Successful requests return HTTP 200. Every error returns a JSON body with a stable, machine-readable code and a human-readable message. Always branch on the code, not on the message text.

HTTP/1.1 422 Unprocessable Content
Content-Type: application/json

{
  "error": {
    "code": "invalid_image",
    "message": "The uploaded file could not be decoded as an image."
  }
}
Stav HTTPKód chybyVýznam
400bad_requestPožiadavka je chybne zostavená, napríklad nebol odoslaný žiadny obrázok alebo je telo JSON neplatné.
401unauthorizedKľúč API chýba alebo je neplatný.
403forbiddenE-mail majiteľa kľúča nie je potvrdený, odber newslettera je vypnutý alebo je účet zablokovaný.
413file_too_largeObrázok je väčší ako 10 MB.
415unsupported_typeTyp súboru alebo typ obsahu požiadavky nie je podporovaný.
422invalid_imageSúbor sa nepodarilo dekódovať ako obrázok alebo sa nepodarilo stiahnuť obrázok z URL.
429rate_limitedPríliš veľa požiadaviek. Počkajte do X-RateLimit-Reset.
500server_errorNa našej strane nastala chyba. Skúste to neskôr; ak problém pretrváva, kontaktujte podporu.

Výstupné súbory

With all groups enabled, a package contains the files below. Files from disabled groups are left out.

SúborVeľkosťSkupina
favicon.ico16, 32, 48 (konfigurovateľné)vždy
favicon-16x16.png16 × 16favicon
favicon-32x32.png32 × 32favicon
favicon-96x96.png96 × 96favicon
apple-icon-57x57.png57 × 57apple
apple-icon-60x60.png60 × 60apple
apple-icon-72x72.png72 × 72apple
apple-icon-76x76.png76 × 76apple
apple-icon-114x114.png114 × 114apple
apple-icon-120x120.png120 × 120apple
apple-icon-144x144.png144 × 144apple
apple-icon-152x152.png152 × 152apple
apple-icon-180x180.png180 × 180apple
apple-icon.png192 × 192apple
apple-icon-precomposed.png192 × 192apple
apple-touch-icon.png180 × 180apple
android-icon-36x36.png36 × 36android
android-icon-48x48.png48 × 48android
android-icon-72x72.png72 × 72android
android-icon-96x96.png96 × 96android
android-icon-144x144.png144 × 144android
android-icon-192x192.png192 × 192android
android-icon-512x512.png512 × 512android
web-app-manifest-192x192.png192 × 192android
web-app-manifest-512x512.png512 × 512android
maskable-icon-512x512.png512 × 512android
ms-icon-70x70.png70 × 70ms
ms-icon-144x144.png144 × 144ms
ms-icon-150x150.png150 × 150ms
ms-icon-310x310.png310 × 310ms

Ďalšie súbory

SúborZahrnutéPopis
favicon.svgIba pre vstup SVG bez orezania, priblíženia, odsadenia, zaoblených rohov alebo pozadiaOčistená kópia vášho SVG pre prehliadače, ktoré podporujú vektorové favicony.
manifest.json, site.webmanifestandroidManifest webovej aplikácie pre Android a inštalovateľné PWA (dve rovnaké kópie).
browserconfig.xmlmsKonfigurácia dlaždíc Windows s farbou vašej dlaždice.
readme-makefav.txtvždyNávod na inštaláciu s HTML kódom pre váš <head> na konci.

Príklady kódu

Each example uploads logo.png with a few options and saves favicons.zip, handling API errors. Set the environment variable MAKEFAV_API_KEY to your API key first.

Nahratie multipart:

# Multipart upload (recommended). --fail-with-body exits non-zero on HTTP errors
# and still saves the JSON error body, so you can inspect it.
curl --fail-with-body -sS https://makefav.com/api/v1/generate \
  -H "Authorization: Bearer $MAKEFAV_API_KEY" \
  -F "[email protected]" \
  -F "app_name=My App" \
  -F "theme_color=#2f9e68" \
  -F "radius=20" \
  -o favicons.zip \
  || { echo "Request failed:"; cat favicons.zip; rm -f favicons.zip; exit 1; }

Telo JSON s obrázkom zakódovaným v base64 (vyžaduje jq):

# JSON body with a base64-encoded image (built with jq to avoid argument length limits)
base64 < logo.png | tr -d '\n' > logo.b64
jq -n --rawfile img logo.b64 \
  '{image_base64: $img, app_name: "My App", theme_color: "#2f9e68", radius: 20}' \
| curl --fail-with-body -sS https://makefav.com/api/v1/generate \
    -H "Authorization: Bearer $MAKEFAV_API_KEY" \
    -H "Content-Type: application/json" \
    --data-binary @- \
    -o favicons.zip \
  || { echo "Request failed:"; cat favicons.zip; rm -f favicons.zip; exit 1; }

Použitie v HTML

Upload all files to the folder you set with path, then paste the snippet into the <head> of every page. It is included at the end of readme-makefav.txt in the package and, with format=json, returned in the html field. Example for the options used in the code examples above:

<head>
  <meta charset="utf-8">
  <title>My App</title>

  <link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
  <link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
  <link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
  <link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
  <link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
  <link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
  <link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
  <link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
  <link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
  <link rel="icon" type="image/png" sizes="192x192" href="/android-icon-192x192.png">
  <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
  <link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
  <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
  <link rel="icon" href="/favicon.ico" sizes="any">
  <link rel="manifest" href="/manifest.json">
  <meta name="msapplication-TileColor" content="#2f9e68">
  <meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
  <meta name="msapplication-config" content="/browserconfig.xml">
  <meta name="theme-color" content="#2f9e68">
</head>

Po nasadení vymažte vyrovnávaciu pamäť prehliadača alebo otvorte web v súkromnom okne – prehliadače favicony agresívne ukladajú do vyrovnávacej pamäte.

Zoznam zmien

v1

  • Prvé verejné vydanie REST API MakeFav.
  • Endpoints POST /generate, GET /me, GET /sizes and GET /openapi.json.
  • Formáty odpovede ZIP a JSON, vstup obrázka cez multipart, base64 a URL.
  • Osobné kľúče API so 100 požiadavkami za hodinu.

Verzia 1 je stabilná: pridávame iba voliteľné parametre a polia. Zásadné zmeny vyjdú ako nová verzia s predchádzajúcim upozornením.

Podpora

Otázky, hlásenia chýb alebo potrebujete vyšší limit požiadaviek? Radi vám pomôžeme. V správe uveďte čas požiadavky a kód chyby – nikdy nie váš kľúč API.