REST API · v1

MakeFav API dokumentacija

Generuokite pilnus favicon paketus iš savo kodo, kūrimo skriptų ir CI procesų. Viena užklausa paverčia bet kurį paveikslėlį į favicon.ico, Apple touch icon, Android ir PWA piktogramas, web manifestą ir paruoštą įklijuoti HTML.

Šiame puslapyje

Greita pradžia

MakeFav API yra paprasta HTTPS + JSON REST API. Visi galiniai taškai yra po vienu baziniu URL:

https://makefav.com/api/v1
  1. Susikurkite nemokamą paskyrą
    Užsiregistruokite, patvirtinkite el. pašto adresą ir palikite aktyvią MakeFav naujienlaiškio prenumeratą – tai vienintelė nemokamo plano sąlyga.
  2. Sukurkite API raktą
    Atidarykite API raktų puslapį savo paskyroje ir sukurkite asmeninį raktą. Jis prasideda mf_ ir rodomas tik vieną kartą, todėl saugokite jį patikimai. Tvarkyti API raktus
  3. Išsiųskite pirmąją užklausą
    Įkelkite paveikslėlį į generavimo galinį tašką ir išsaugokite gautą ZIP failą:
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.

Autentifikacija

Kiekvienoje užklausoje į apsaugotą galinį tašką turi būti asmeninis API raktas. Raktus galite bet kada kurti, pavadinti ir atšaukti savo paskyros puslapyje: API raktai

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
Raktai priklauso naudotojui, kurio el. pašto adresas patvirtintas, o naujienlaiškio prenumerata aktyvi (nemokamo plano sąlyga). Jei el. paštas nepatvirtintas, naujienlaiškis išjungtas arba paskyra užblokuota, kiekviena užklausa grąžina 403 Forbidden.
Su API raktais elkitės kaip su slaptažodžiais: laikykite juos serveryje ar CI paslaptyse, niekada naršyklės kode, mobiliosiose programėlėse ar viešose saugyklose. Jei raktas nutekėjo, nedelsdami jį atšaukite.

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

Užklausų limitai

Pagal numatytuosius nustatymus kiekvienas API raktas gali atlikti 100 užklausų per valandą. Kiekvienas autentifikuotas atsakas parodo jūsų būseną:

AntraštėAprašymas
X-RateLimit-LimitDidžiausias leidžiamas užklausų skaičius dabartiniame lange.
X-RateLimit-RemainingLikę užklausų dabartiniame lange.
X-RateLimit-ResetUnix laiko žymė (sekundėmis, UTC), kada langas atsinaujina.
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.

Galiniai taškai

Galinis taškasAutentifikacijaAprašymas
POST /generateAPI raktasSukurti pilną favicon paketą.
GET /meAPI raktasJūsų paskyra ir dabartinė užklausų limito būsena.
GET /sizesNėraVisų generatoriaus sukuriamų piktogramų failų ir dydžių sąrašas.
GET /openapi.jsonNėraMašininiu būdu nuskaitoma OpenAPI 3.1 specifikacija.

Sukurti favicon paketą

POST/generate

Sukuria visą favicon paketą iš vieno šaltinio paveikslėlio. Paveikslėlį galite siųsti vienu iš trijų būdų:

Turinio tipasPaveikslėlio laukasAprašymas
multipart/form-dataimageFailo įkėlimas. Rekomenduojama – efektyviausias variantas.
application/jsonimage_base64Base64-encoded image, either raw base64 or a data URL such as data:image/png;base64,iVBOR….
application/jsonimage_urlViešas paveikslėlio http arba https URL. Serveris jį atsisiunčia (maks. 10 MB).

Palaikomi įvesties formatai: PNG, JPG, WebP, AVIF, GIF, BMP, SVG ir ICO. Maksimalus failo dydis: 10 MB.

Parametrai

Visi parametrai neprivalomi. Siųskite juos kaip formos laukus (multipart) arba kaip JSON savybes. Neteisingos reikšmės pakeičiamos numatytosiomis.

VardasTipas / intervalasNumatytoji reikšmėAprašymas
app_nameeilutė, maks. 60 simboliųMy WebsiteJūsų svetainės ar programėlės pavadinimas, naudojamas manifest.json faile ir pavyzdiniame puslapyje.
short_nameeilutė, maks. 24 simboliaipirmi 12 app_name simboliųTrumpas pavadinimas, rodomas po piktograma Android pagrindiniame ekrane.
theme_color#rrggbb#ffffffNaršyklės sąsajos spalva (theme-color meta žymė ir manifestas).
tile_color#rrggbbtokia pati kaip theme_colorWindows pradžios plytelių fono spalva.
backgroundtransparent | #rrggbbtransparentNaršyklės, Android ir Windows piktogramų fonas.
apple_background#rrggbb#ffffffApple touch piktogramų ir maskable piktogramos fonas (iOS nepalaiko permatomumo). Ignoruojama, kai fonas yra spalva – tada naudojama ta spalva.
paddingsveikasis skaičius, 0–40 (%)0Tuščia vieta aplink paveikslėlį, išreikšta piktogramos dydžio procentais.
radiussveikasis skaičius, 0–50 (%)0Suapvalinti kampai. 50 sukuria apskritimą. Netaikoma Apple piktogramoms, kurias iOS suapvalina pati.
zoomsveikasis skaičius, 50–400 (%)100Paveikslėlio mastelis piktogramoje. Reikšmės virš 100 apkarpo paveikslėlį.
offset_x, offset_yskaičius nuo -1 iki 10Paslenka paveikslėlį horizontaliai / vertikaliai, kaip piktogramos dydžio dalį.
patheilutė/Aplankas jūsų serveryje, kuriame bus piktogramos. Naudojamas HTML fragmente, manifeste ir browserconfig.
displaystandalone | fullscreen | minimal-ui | browserstandalonePWA rodymo režimas, įrašomas į manifestą.
pixelatedauto | 1 | 0autoRyškus artimiausio kaimyno mastelio keitimas pikselių grafikai. Reikšmė auto jį įjungia 64 px ar mažesniems šaltiniams.
maskable1 | 01Taip pat sukuria maskable-icon-512x512.png su saugios zonos paraštėmis Android adaptyvioms piktogramoms.
ico_sizeskableliais atskirtas sąrašas: 16, 24, 32, 48, 64, 128, 25616,32,48Dydžiai, įterpti į favicon.ico.
groupskableliais atskirtas sąrašas: favicon, apple, android, msfavicon,apple,android,msGeneruojami piktogramų rinkiniai: naršyklės favicon, Apple touch piktogramos, Android / PWA piktogramos ir Windows plytelės.
formatzip | jsonzipAtsakymo formatas – žr. toliau.

Atsakymas

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.

Užklausos pavyzdys – multipart, ZIP atsakymas

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>

Užklausos pavyzdys – JSON su paveikslėlio URL, JSON atsakymas

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

Gauti jūsų paskyrą

GET/me

Grąžina naudotoją, kuriam priklauso API raktas, ir dabartinę užklausų limito būseną. Naudinga raktui patikrinti. Reikalingas autentifikavimas; parametrų nėra.

Užklausos pavyzdys

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

Atsakymo pavyzdys

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

Piktogramų dydžių sąrašas

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.

Užklausos pavyzdys

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

Atsakymo pavyzdys

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

OpenAPI specifikacija

GET/openapi.json

Grąžina šios API OpenAPI 3.1 aprašą. Autentifikavimas nereikalingas. Importuokite jį į Postman, Insomnia ar Swagger UI arba naudokite tipizuotam klientui savo kalba sugeneruoti.

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

Klaidos

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."
  }
}
HTTP būsenaKlaidos kodasReikšmė
400bad_requestUžklausa neteisingai sudaryta, pavyzdžiui, nebuvo išsiųstas paveikslėlis arba JSON turinys netinkamas.
401unauthorizedAPI raktas nenurodytas arba neteisingas.
403forbiddenRakto savininko el. paštas nepatvirtintas, naujienlaiškio prenumerata išjungta arba paskyra užblokuota.
413file_too_largePaveikslėlis didesnis nei 10 MB.
415unsupported_typeFailo tipas arba užklausos turinio tipas nepalaikomas.
422invalid_imageFailo nepavyko dekoduoti kaip paveikslėlio arba nepavyko atsisiųsti paveikslėlio pagal URL.
429rate_limitedPer daug užklausų. Palaukite iki X-RateLimit-Reset.
500server_errorMūsų pusėje įvyko klaida. Bandykite vėliau; jei problema išlieka, susisiekite su pagalba.

Išvesties failai

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

FailasDydisGrupė
favicon.ico16, 32, 48 (konfigūruojama)visada
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

Papildomi failai

FailasĮtrauktaAprašymas
favicon.svgTik SVG įvesčiai be apkirpimo, mastelio keitimo, paraščių, kampų ar fonoIšvalyta jūsų SVG kopija naršyklėms, palaikančioms vektorinius favicon.
manifest.json, site.webmanifestandroidŽiniatinklio programėlės manifestas Android ir įdiegiamoms PWA (dvi vienodos kopijos).
browserconfig.xmlmsWindows plytelių konfigūracija su jūsų plytelių spalva.
readme-makefav.txtvisadaDiegimo instrukcijos su HTML kodu jūsų <head> pabaigoje.

Kodo pavyzdžiai

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.

Multipart įkėlimas:

# 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; }

JSON turinys su base64 užkoduotu paveikslėliu (reikalingas 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; }

Naudojimas 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 diegimo išvalykite naršyklės talpyklą arba atidarykite svetainę privačiame lange – naršyklės agresyviai talpina favicon.

Pakeitimų istorija

v1

  • Pirmasis viešas MakeFav REST API leidimas.
  • Endpoints POST /generate, GET /me, GET /sizes and GET /openapi.json.
  • ZIP ir JSON atsakymo formatai, multipart, base64 ir paveikslėlio URL įvestis.
  • Asmeniniai API raktai su 100 užklausų per valandą.

1 versija yra stabili: pridedame tik neprivalomus parametrus ir laukus. Esminiai pakeitimai bus išleidžiami kaip nauja versija su išankstiniu įspėjimu.

Pagalba

Turite klausimų, radote klaidą ar reikia didesnio užklausų limito? Mielai padėsime. Žinutėje nurodykite užklausos laiką ir klaidos kodą – niekada nesiųskite savo API rakto.