REST API · v1

MakeFav API -dokumentaatio

Luo täydellisiä favicon-paketteja omasta koodistasi, build-skripteistä ja CI-putkista. Yhdellä pyynnöllä mistä tahansa kuvasta syntyy favicon.ico, Apple touch -kuvakkeet, Android- ja PWA-kuvakkeet, web manifest ja liitettävissä oleva HTML.

Tällä sivulla

Pikaopas

MakeFav API on yksinkertainen HTTPS + JSON REST API. Kaikki päätepisteet sijaitsevat yhden perus-URL-osoitteen alla:

https://makefav.com/api/v1
  1. Luo ilmainen tili
    Rekisteröidy, vahvista sähköpostiosoitteesi ja pidä MakeFav-uutiskirjeen tilaus voimassa – se on ilmaisen paketin ainoa ehto.
  2. Luo API-avain
    Avaa tilisi API-avainsivu ja luo henkilökohtainen avain. Se alkaa merkeillä mf_ ja näytetään vain kerran, joten tallenna se turvallisesti. Hallitse API-avaimia
  3. Lähetä ensimmäinen pyyntösi
    Lataa kuva generate-päätepisteeseen ja tallenna palautettu ZIP-tiedosto:
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.

Todennus

Jokaisen suojatun päätepisteen pyynnön on sisällettävä henkilökohtainen API-avain. Voit luoda, nimetä ja peruuttaa avaimia milloin tahansa tilisi sivulla: API-avaimet

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
Avaimet kuuluvat käyttäjälle, jonka sähköpostiosoite on vahvistettu ja jonka uutiskirjeen tilaus on voimassa (ilmaisen paketin ehto). Jos sähköpostia ei ole vahvistettu, uutiskirje on poistettu käytöstä tai tili on estetty, jokainen pyyntö palauttaa virheen 403 Forbidden.
Kohtele API-avaimia kuten salasanoja: säilytä niitä palvelimella tai CI-salaisuuksissa, älä koskaan selaimen koodissa, mobiilisovelluksissa tai julkisissa repositorioissa. Peruuta avain heti, jos se vuotaa.

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

Pyyntörajat

Oletuksena jokaisella API-avaimella voi tehdä 100 pyyntöä tunnissa. Jokainen todennettu vastaus kertoo, missä tilanteessa olet:

OtsakeKuvaus
X-RateLimit-LimitNykyisessä aikaikkunassa sallittujen pyyntöjen enimmäismäärä.
X-RateLimit-RemainingNykyisessä aikaikkunassa jäljellä olevat pyynnöt.
X-RateLimit-ResetUnix-aikaleima (sekunteina, UTC), jolloin aikaikkuna nollautuu.
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.

Päätepisteet

PäätepisteTodennusKuvaus
POST /generateAPI-avainLuo täydellinen favicon-paketti.
GET /meAPI-avainTilisi ja nykyinen pyyntörajan tila.
GET /sizesEi mitäänLuettelo kaikista generaattorin tuottamista kuvakkeiden tiedostoista ja koista.
GET /openapi.jsonEi mitäänKoneluettava OpenAPI 3.1 -määrittely.

Luo favicon-paketti

POST/generate

Luo täydellisen favicon-paketin yhdestä lähdekuvasta. Lähetä kuva jollakin kolmesta tavasta:

SisältötyyppiKuvakenttäKuvaus
multipart/form-dataimageTiedoston lataus. Suositeltu – tehokkain vaihtoehto.
application/jsonimage_base64Base64-encoded image, either raw base64 or a data URL such as data:image/png;base64,iVBOR….
application/jsonimage_urlKuvan julkinen http- tai https-URL. Palvelin lataa sen (enintään 10 Mt).

Tuetut syöttömuodot: PNG, JPG, WebP, AVIF, GIF, BMP, SVG ja ICO. Tiedoston enimmäiskoko: 10 Mt.

Parametrit

Kaikki parametrit ovat valinnaisia. Lähetä ne lomakekenttinä (multipart) tai JSON-ominaisuuksina. Virheelliset arvot korvataan oletusarvolla.

NimiTyyppi / alueOletusKuvaus
app_namemerkkijono, enintään 60 merkkiäMy WebsiteVerkkosivustosi tai sovelluksesi nimi, jota käytetään manifest.json-tiedostossa ja esimerkkisivulla.
short_namemerkkijono, enintään 24 merkkiäapp_name-arvon 12 ensimmäistä merkkiäLyhyt nimi, joka näkyy kuvakkeen alla Androidin aloitusnäytöillä.
theme_color#rrggbb#ffffffSelaimen käyttöliittymän väri (theme-color-metatunniste ja manifest).
tile_color#rrggbbsama kuin theme_colorWindowsin Käynnistä-ruudun tiilien taustaväri.
backgroundtransparent | #rrggbbtransparentSelaimen, Androidin ja Windowsin kuvakkeiden tausta.
apple_background#rrggbb#ffffffApple touch -kuvakkeiden ja maskable-kuvakkeen tausta (iOS ei tue läpinäkyvyyttä). Ohitetaan, jos tausta on väri – silloin käytetään sitä väriä.
paddingkokonaisluku, 0–40 (%)0Kuvan ympärillä oleva tyhjä tila prosentteina kuvakkeen koosta.
radiuskokonaisluku, 0–50 (%)0Pyöristetyt kulmat. 50 tekee ympyrän. Ei käytetä Apple-kuvakkeisiin, koska iOS pyöristää ne itse.
zoomkokonaisluku, 50–400 (%)100Kuvan mittakaava kuvakkeen sisällä. Yli 100:n arvot rajaavat kuvaa.
offset_x, offset_yluku, -1…10Siirtää kuvaa vaaka- tai pystysuunnassa murto-osana kuvakkeen koosta.
pathmerkkijono/Palvelimesi kansio, jossa kuvakkeet sijaitsevat. Käytetään HTML-koodissa, manifestissa ja browserconfigissa.
displaystandalone | fullscreen | minimal-ui | browserstandalonePWA:n näyttötila, joka kirjoitetaan manifestiin.
pixelatedauto | 1 | 0autoTerävä lähimmän naapurin skaalaus pikselitaiteelle. auto ottaa sen käyttöön enintään 64 px:n lähteille.
maskable1 | 01Luo myös maskable-icon-512x512.png turva-alueen reunuksella Androidin mukautuville kuvakkeille.
ico_sizespilkuilla erotettu luettelo: 16, 24, 32, 48, 64, 128, 25616,32,48favicon.ico-tiedostoon sisällytettävät koot.
groupspilkuilla erotettu luettelo: favicon, apple, android, msfavicon,apple,android,msLuotavat kuvakesarjat: selaimen faviconit, Apple touch -kuvakkeet, Android- / PWA-kuvakkeet ja Windows-tiilet.
formatzip | jsonzipVastauksen muoto – katso alla.

Vastaus

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.

Esimerkkipyyntö – multipart, ZIP-vastaus

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>

Esimerkkipyyntö – JSON ja kuvan URL, JSON-vastaus

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

Hae tilisi tiedot

GET/me

Palauttaa käyttäjän, jolle API-avain kuuluu, sekä nykyisen pyyntörajan tilan. Hyödyllinen avaimen tarkistamiseen. Vaatii todennuksen; ei parametreja.

Esimerkkipyyntö

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

Esimerkkivastaus

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

Luettele kuvakekoot

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.

Esimerkkipyyntö

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

Esimerkkivastaus

{
  "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-määrittely

GET/openapi.json

Palauttaa tämän API:n OpenAPI 3.1 -kuvauksen. Ei todennusta. Tuo se Postmaniin, Insomniaan tai Swagger UI:hin tai käytä sitä tyypitetyn asiakasohjelman luomiseen omalle kielellesi.

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

Virheet

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-tilaVirhekoodiMerkitys
400bad_requestPyyntö on virheellinen, esimerkiksi kuvaa ei lähetetty tai JSON-runko on virheellinen.
401unauthorizedAPI-avain puuttuu tai on virheellinen.
403forbiddenAvaimen omistajan sähköpostia ei ole vahvistettu, uutiskirjeen tilaus on poistettu käytöstä tai tili on estetty.
413file_too_largeKuva on suurempi kuin 10 Mt.
415unsupported_typeTiedostotyyppiä tai pyynnön sisältötyyppiä ei tueta.
422invalid_imageTiedostoa ei voitu tulkita kuvaksi tai kuvan URL-osoitetta ei voitu ladata.
429rate_limitedLiikaa pyyntöjä. Odota, kunnes X-RateLimit-Reset on kulunut.
500server_errorJokin meni pieleen meidän päässämme. Yritä myöhemmin uudelleen; jos ongelma jatkuu, ota yhteyttä tukeen.

Tulostetiedostot

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

TiedostoKokoRyhmä
favicon.ico16, 32, 48 (määritettävissä)aina
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

Lisätiedostot

TiedostoMukanaKuvaus
favicon.svgVain SVG-syötteelle ilman rajausta, zoomausta, reunusta, kulmia tai taustaaPuhdistettu kopio SVG:stäsi selaimille, jotka tukevat vektorifaviconeja.
manifest.json, site.webmanifestandroidWeb app manifest Androidille ja asennettaville PWA-sovelluksille (kaksi identtistä kopiota).
browserconfig.xmlmsWindows-tiilten määritys tiilesi värillä.
readme-makefav.txtainaAsennusohjeet, joiden lopussa on HTML-koodi sivujesi <head>-osioon.

Koodiesimerkit

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-lataus:

# 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-runko base64-koodatulla kuvalla (vaatii jq:n):

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

HTML-käyttö

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>

Tyhjennä käyttöönoton jälkeen selaimen välimuisti tai avaa sivusto yksityisessä ikkunassa – selaimet tallentavat faviconit välimuistiin tiukasti.

Muutosloki

v1

  • MakeFav REST API:n ensimmäinen julkinen julkaisu.
  • Endpoints POST /generate, GET /me, GET /sizes and GET /openapi.json.
  • ZIP- ja JSON-vastausmuodot sekä multipart-, base64- ja URL-kuvasyöte.
  • Henkilökohtaiset API-avaimet, joilla 100 pyyntöä tunnissa.

Versio 1 on vakaa: lisäämme vain valinnaisia parametreja ja kenttiä. Yhteensopimattomat muutokset julkaistaan uutena versiona ennakkoilmoituksella.

Tuki

Kysyttävää, virheraportteja tai tarvitsetko korkeamman pyyntörajan? Autamme mielellämme. Liitä viestiin pyynnön aika ja virhekoodi – älä koskaan API-avaintasi.