REST API · v1

Dokumentacija API MakeFav

Ustvarjajte popolne pakete faviconov iz lastne kode, skript za gradnjo in cevovodov CI. En zahtevek pretvori katero koli sliko v favicon.ico, Apple touch ikone, ikone za Android in PWA, spletni manifest ter kodo HTML, pripravljeno za lepljenje.

Na tej strani

Hiter začetek

API MakeFav je preprost REST API prek HTTPS in JSON. Vse končne točke so pod enim osnovnim naslovom URL:

https://makefav.com/api/v1
  1. Ustvarite brezplačen račun
    Registrirajte se, potrdite svoj e-poštni naslov in ohranite aktivno naročnino na novice MakeFav – to je edini pogoj brezplačnega paketa.
  2. Ustvarite ključ API
    Odprite stran s ključi API v svojem računu in ustvarite osebni ključ. Začne se z mf_ in je prikazan samo enkrat, zato ga varno shranite. Upravljanje ključev API
  3. Pošljite prvi zahtevek
    Naložite sliko na končno točko generate in shranite vrnjeno datoteko 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.

Preverjanje pristnosti

Vsak zahtevek na zaščiteno končno točko mora vsebovati osebni ključ API. Ključe lahko kadar koli ustvarite, poimenujete in prekličete na strani svojega računa: Ključi API

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
Ključi pripadajo uporabniku, čigar e-poštni naslov je potrjen in čigar naročnina na novice je aktivna (pogoj brezplačnega paketa). Če e-pošta ni potrjena, so novice onemogočene ali je račun blokiran, vsak zahtevek vrne 403 Forbidden.
Z ključi API ravnajte kot z gesli: hranite jih na strežniku ali v skrivnostih CI, nikoli v kodi brskalnika, mobilnih aplikacijah ali javnih repozitorijih. Če ključ pppuide, ga takoj prekličite.

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

Omejitve zahtevkov

Privzeto lahko vsak ključ API pošlje 100 zahtevkov na uro. Vsak overjeni odgovor vam pove, kakšno je trenutno stanje:

GlavaOpis
X-RateLimit-LimitNajvečje število zahtevkov, dovoljenih v trenutnem oknu.
X-RateLimit-RemainingPreostali zahtevki v trenutnem oknu.
X-RateLimit-ResetUnix časovni žig (sekunde, UTC), ko se okno ponastavi.
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.

Končne točke

Končna točkaOveritevOpis
POST /generateKljuč APIUstvari popoln paket faviconov.
GET /meKljuč APIVaš račun in trenutno stanje omejitve zahtevkov.
GET /sizesBrezSeznam vseh ikonskih datotek in velikosti, ki jih ustvari generator.
GET /openapi.jsonBrezStrojno berljiva specifikacija OpenAPI 3.1.

Ustvari paket favicon

POST/generate

Iz ene izvorne slike ustvari celoten paket favicon. Sliko lahko pošljete na tri načine:

Vrsta vsebinePolje za slikoOpis
multipart/form-dataimageNalaganje datoteke. Priporočeno – najučinkovitejša možnost.
application/jsonimage_base64Base64-encoded image, either raw base64 or a data URL such as data:image/png;base64,iVBOR….
application/jsonimage_urlJavni URL slike (http ali https). Strežnik jo prenese (največ 10 MB).

Podprti vhodni formati: PNG, JPG, WebP, AVIF, GIF, BMP, SVG in ICO. Največja velikost datoteke: 10 MB.

Parametri

Vsi parametri so neobvezni. Pošljite jih kot polja obrazca (multipart) ali kot lastnosti JSON. Neveljavne vrednosti se nadomestijo s privzetimi.

ImeTip / obsegPrivzetoOpis
app_nameniz, največ 60 znakovMy WebsiteIme vašega spletnega mesta ali aplikacije, uporabljeno v manifest.json in na primerni strani.
short_nameniz, največ 24 znakovprvih 12 znakov app_nameKratko ime, prikazano pod ikono na domačih zaslonih Androida.
theme_color#rrggbb#ffffffBarva uporabniškega vmesnika brskalnika (meta oznaka theme-color in manifest).
tile_color#rrggbbenako kot theme_colorBarva ozadja ploščic v meniju Start v sistemu Windows.
backgroundtransparent | #rrggbbtransparentOzadje ikon za brskalnik, Android in Windows.
apple_background#rrggbb#ffffffOzadje ikon Apple touch in maskable ikone (iOS ne podpira prosojnosti). Prezre se, če je background barva – takrat se uporabi ta barva.
paddingcelo število, 0–40 (%)0Prazen prostor okoli slike, kot odstotek velikosti ikone.
radiuscelo število, 0–50 (%)0Zaobljeni robovi. Vrednost 50 ustvari krog. Ne velja za ikone Apple, ki jih iOS zaobli sam.
zoomcelo število, 50–400 (%)100Merilo slike znotraj ikone. Vrednosti nad 100 sliko obrežejo.
offset_x, offset_yštevilo, od -1 do 10Premakne sliko vodoravno / navpično, kot delež velikosti ikone.
pathniz/Mapa na vašem strežniku, kjer bodo ikone. Uporabljeno v izseku HTML, manifestu in datoteki browserconfig.
displaystandalone | fullscreen | minimal-ui | browserstandaloneNačin prikaza PWA, zapisan v manifest.
pixelatedauto | 1 | 0autoOstro skaliranje z najbližjim sosedom za pixel art. Možnost auto ga vklopi za izvorne slike velikosti do 64 px.
maskable1 | 01Ustvari tudi maskable-icon-512x512.png z varnim robom za prilagodljive ikone Androida.
ico_sizesz vejicami ločen seznam: 16, 24, 32, 48, 64, 128, 25616,32,48Velikosti, vgrajene v favicon.ico.
groupsz vejicami ločen seznam: favicon, apple, android, msfavicon,apple,android,msKompleti ikon za ustvarjanje: favicone za brskalnike, ikone Apple touch, ikone za Android / PWA in ploščice za Windows.
formatzip | jsonzipFormat odgovora – glejte spodaj.

Odgovor

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.

Primer zahteve – multipart, odgovor 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>

Primer zahteve – JSON z URL-jem slike, odgovor 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…"}
  ]
}

Pridobite svoj račun

GET/me

Vrne uporabnika, ki mu pripada ključ API, in trenutno stanje omejitve zahtevkov. Uporabno za preverjanje ključa. Zahteva overitev; brez parametrov.

Primer zahteve

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

Primer odgovora

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

Seznam velikosti 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.

Primer zahteve

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

Primer odgovora

{
  "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"}
  ]
}

Specifikacija OpenAPI

GET/openapi.json

Vrne opis tega API-ja v formatu OpenAPI 3.1. Brez overitve. Uvozite ga v Postman, Insomnia ali Swagger UI ali ga uporabite za izdelavo tipiziranega odjemalca za vaš jezik.

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

Napake

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."
  }
}
Status HTTPKoda napakePomen
400bad_requestZahteva je napačno oblikovana, na primer slika ni bila poslana ali pa je telo JSON neveljavno.
401unauthorizedKljuč API manjka ali je neveljaven.
403forbiddenE-pošta lastnika ključa ni potrjena, naročnina na novice je onemogočena ali pa je račun blokiran.
413file_too_largeSlika je večja od 10 MB.
415unsupported_typeVrsta datoteke ali vrsta vsebine zahteve ni podprta.
422invalid_imageDatoteke ni bilo mogoče dekodirati kot sliko ali pa URL-ja slike ni bilo mogoče prenesti.
429rate_limitedPreveč zahtevkov. Počakajte do X-RateLimit-Reset.
500server_errorPri nas je prišlo do napake. Poskusite znova pozneje; če se težava ponavlja, se obrnite na podporo.

Izhodne datoteke

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

DatotekaVelikostSkupina
favicon.ico16, 32, 48 (nastavljivo)vedno
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

Dodatne datoteke

DatotekaVključenoOpis
favicon.svgSamo za vhod SVG brez obrezovanja, povečave, roba, zaobljenih kotov ali ozadjaOčiščena kopija vašega SVG za brskalnike, ki podpirajo vektorske favicone.
manifest.json, site.webmanifestandroidSpletni manifest aplikacije za Android in namestljive PWA (dve enaki kopiji).
browserconfig.xmlmsKonfiguracija ploščic za Windows z barvo vaše ploščice.
readme-makefav.txtvednoNavodila za namestitev s kodo HTML za vaš <head> na koncu.

Primeri kode

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.

Nalaganje 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 sliko, kodirano v base64 (zahteva 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; }

Uporaba 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 objavi počistite predpomnilnik brskalnika ali odprite spletno mesto v zasebnem oknu – brskalniki favicone agresivno predpomnijo.

Dnevnik sprememb

v1

  • Prva javna izdaja MakeFav REST API-ja.
  • Endpoints POST /generate, GET /me, GET /sizes and GET /openapi.json.
  • Formata odgovora ZIP in JSON, vhod slike kot multipart, base64 in URL.
  • Osebni ključi API s 100 zahtevki na uro.

Različica 1 je stabilna: dodajamo le neobvezne parametre in polja. Spremembe, ki lomijo združljivost, bomo izdali kot novo različico z vnaprejšnjim obvestilom.

Podpora

Imate vprašanja, želite prijaviti napako ali potrebujete višjo omejitev zahtevkov? Z veseljem vam pomagamo. V sporočilo vključite čas zahteve in kodo napake – nikoli pa ključa API.