REST API · v1

MakeFav API belgeleri

Kendi kodunuzdan, derleme betiklerinizden ve CI hatlarınızdan eksiksiz favicon paketleri oluşturun. Tek bir istek, herhangi bir görseli favicon.ico, Apple touch icon'lar, Android ve PWA simgeleri, bir web manifestosu ve yapıştırmaya hazır HTML koduna dönüştürür.

Bu sayfada

Hızlı başlangıç

MakeFav API, basit bir HTTPS + JSON REST API'sidir. Tüm uç noktalar tek bir temel URL altında bulunur:

https://makefav.com/api/v1
  1. Ücretsiz hesap oluşturun
    Kaydolun, e-posta adresinizi doğrulayın ve MakeFav bülten aboneliğinizi aktif tutun – ücretsiz planın tek şartı budur.
  2. API anahtarı oluşturun
    Hesabınızdaki API anahtarları sayfasını açın ve kişisel bir anahtar oluşturun. Anahtar mf_ ile başlar ve yalnızca bir kez gösterilir, bu yüzden güvenli bir yerde saklayın. API anahtarlarını yönet
  3. İlk isteğinizi gönderin
    Generate uç noktasına bir görsel yükleyin ve dönen ZIP dosyasını kaydedin:
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.

Kimlik doğrulama

Korumalı bir uç noktaya yapılan her istek kişisel bir API anahtarı içermelidir. Anahtarları istediğiniz zaman hesap sayfanızdan oluşturabilir, adlandırabilir ve iptal edebilirsiniz: API anahtarları

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
Anahtarlar, e-posta adresi doğrulanmış ve bülten aboneliği aktif olan (ücretsiz plan koşulu) bir kullanıcıya aittir. E-posta doğrulanmamışsa, bülten devre dışıysa veya hesap yasaklanmışsa her istek 403 Forbidden döndürür.
API anahtarlarına parola gibi davranın: onları sunucuda veya CI gizli değişkenlerinde tutun; tarayıcı kodunda, mobil uygulamalarda veya herkese açık depolarda asla bulundurmayın. Sızması durumunda anahtarı hemen iptal edin.

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

İstek sınırları

Varsayılan olarak her API anahtarı saatte 100 istek yapabilir. Kimliği doğrulanmış her yanıt, mevcut durumunuzu bildirir:

BaşlıkAçıklama
X-RateLimit-LimitGeçerli pencerede izin verilen maksimum istek sayısı.
X-RateLimit-RemainingGeçerli pencerede kalan istek sayısı.
X-RateLimit-ResetPencerenin sıfırlanacağı Unix zaman damgası (saniye, UTC).
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.

Uç noktalar

Uç noktaKimlik doğrulamaAçıklama
POST /generateAPI anahtarıEksiksiz bir favicon paketi oluşturur.
GET /meAPI anahtarıHesabınız ve geçerli istek sınırı durumu.
GET /sizesYokOluşturucunun ürettiği tüm simge dosyalarının ve boyutlarının listesi.
GET /openapi.jsonYokMakine tarafından okunabilir OpenAPI 3.1 spesifikasyonu.

Favicon paketi oluştur

POST/generate

Tek bir kaynak görselden eksiksiz bir favicon paketi oluşturur. Görseli üç yoldan biriyle gönderebilirsiniz:

İçerik türüGörsel alanıAçıklama
multipart/form-dataimageDosya yükleme. Önerilir – en verimli seçenek.
application/jsonimage_base64Base64-encoded image, either raw base64 or a data URL such as data:image/png;base64,iVBOR….
application/jsonimage_urlGörselin herkese açık http veya https URL'si. Sunucu görseli indirir (en fazla 10 MB).

Desteklenen giriş biçimleri: PNG, JPG, WebP, AVIF, GIF, BMP, SVG ve ICO. Maksimum dosya boyutu: 10 MB.

Parametreler

Tüm parametreler isteğe bağlıdır. Bunları form alanları (multipart) veya JSON özellikleri olarak gönderin. Geçersiz değerler varsayılana döner.

AdTür / aralıkVarsayılanAçıklama
app_namedize, en fazla 60 karakterMy WebsiteWeb sitenizin veya uygulamanızın adı; manifest.json dosyasında ve örnek sayfada kullanılır.
short_namedize, en fazla 24 karakterapp_name değerinin ilk 12 karakteriAndroid ana ekranlarında simgenin altında gösterilen kısa ad.
theme_color#rrggbb#ffffffTarayıcı arayüz rengi (theme-color meta etiketi ve manifest).
tile_color#rrggbbtheme_color ile aynıWindows Başlat kutucuklarının arka plan rengi.
backgroundtransparent | #rrggbbtransparentTarayıcı, Android ve Windows simgelerinin arka planı.
apple_background#rrggbb#ffffffApple touch simgelerinin ve maskable simgenin arka planı (iOS saydamlığı desteklemez). Arka plan bir renkse yok sayılır; bunun yerine o renk kullanılır.
paddingtam sayı, 0–40 (%)0Görselin çevresindeki boşluk, simge boyutunun yüzdesi olarak.
radiustam sayı, 0–50 (%)0Yuvarlatılmış köşeler. 50 daire oluşturur. iOS'un kendisinin yuvarlattığı Apple simgelerine uygulanmaz.
zoomtam sayı, 50–400 (%)100Görselin simge içindeki ölçeği. 100'ün üzerindeki değerler görseli kırpar.
offset_x, offset_ysayı, -1 ile 1 arası0Görseli yatay / dikey olarak, simge boyutunun bir oranı kadar kaydırır.
pathdize/Simgelerin bulunacağı sunucunuzdaki klasör. HTML kod parçasında, manifest ve browserconfig dosyasında kullanılır.
displaystandalone | fullscreen | minimal-ui | browserstandaloneManifest'e yazılan PWA görüntüleme modu.
pixelatedauto | 1 | 0autoPiksel sanat için keskin en yakın komşu ölçekleme. auto, 64 px veya daha küçük kaynaklarda bunu etkinleştirir.
maskable1 | 01Android uyarlanabilir simgeler için güvenli alan dolgulu maskable-icon-512x512.png dosyasını da oluşturur.
ico_sizesvirgülle ayrılmış 16, 24, 32, 48, 64, 128, 256 listesi16,32,48favicon.ico içine gömülen boyutlar.
groupsvirgülle ayrılmış favicon, apple, android, ms listesifavicon,apple,android,msOluşturulacak simge setleri: tarayıcı faviconları, Apple touch simgeleri, Android / PWA simgeleri ve Windows kutucukları.
formatzip | jsonzipYanıt biçimi – aşağıya bakın.

Yanıt

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.

Örnek istek – multipart, ZIP yanıtı

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>

Örnek istek – görsel URL'li JSON, JSON yanıtı

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

Hesabınızı alın

GET/me

API anahtarının ait olduğu kullanıcıyı ve mevcut istek sınırı durumunu döndürür. Bir anahtarı doğrulamak için kullanışlıdır. Kimlik doğrulama gerektirir; parametre yoktur.

Örnek istek

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

Örnek yanıt

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

Simge boyutlarını listele

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.

Örnek istek

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

Örnek yanıt

{
  "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 spesifikasyonu

GET/openapi.json

Bu API'nin OpenAPI 3.1 tanımını döndürür. Kimlik doğrulama gerekmez. Postman, Insomnia veya Swagger UI'a aktarın ya da kendi dilinize uygun türlü bir istemci oluşturmak için kullanın.

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

Hatalar

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 durumuHata koduAnlamı
400bad_requestİstek hatalı biçimlendirilmiş; örneğin görsel gönderilmedi veya JSON gövdesi geçersiz.
401unauthorizedAPI anahtarı eksik veya geçersiz.
403forbiddenAnahtar sahibinin e-postası doğrulanmamış, bülten aboneliği devre dışı veya hesap yasaklanmış.
413file_too_largeGörsel 10 MB'tan büyük.
415unsupported_typeDosya türü veya istek içerik türü desteklenmiyor.
422invalid_imageDosya görsel olarak çözümlenemedi veya görsel URL'si indirilemedi.
429rate_limitedÇok fazla istek. X-RateLimit-Reset zamanına kadar bekleyin.
500server_errorBizim tarafımızda bir sorun oluştu. Daha sonra tekrar deneyin; sorun devam ederse destekle iletişime geçin.

Çıktı dosyaları

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

DosyaBoyutGrup
favicon.ico16, 32, 48 (yapılandırılabilir)her zaman
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

Ek dosyalar

DosyaDahilAçıklama
favicon.svgYalnızca kırpma, yakınlaştırma, dolgu, köşe veya arka plan içermeyen SVG girişi içinVektör faviconları destekleyen tarayıcılar için SVG dosyanızın temizlenmiş kopyası.
manifest.json, site.webmanifestandroidAndroid ve yüklenebilir PWA'lar için web uygulaması manifest'i (iki aynı kopya).
browserconfig.xmlmsKutucuk renginizi içeren Windows kutucuk yapılandırması.
readme-makefav.txther zamanSonunda <head> bölümünüz için HTML kodunu içeren kurulum talimatları.

Kod örnekleri

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 yükleme:

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

Base64 kodlu görsel içeren JSON gövdesi (jq gerektirir):

# 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 kullanımı

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>

Yayına aldıktan sonra tarayıcı önbelleğinizi temizleyin veya siteyi gizli pencerede açın – tarayıcılar faviconları agresif şekilde önbelleğe alır.

Değişiklik günlüğü

v1

  • MakeFav REST API'nin ilk herkese açık sürümü.
  • Endpoints POST /generate, GET /me, GET /sizes and GET /openapi.json.
  • ZIP ve JSON yanıt biçimleri; multipart, base64 ve URL ile görsel girişi.
  • Saatte 100 istek hakkı olan kişisel API anahtarları.

Sürüm 1 kararlıdır: yalnızca isteğe bağlı parametreler ve alanlar ekleriz. Geriye dönük uyumsuz değişiklikler önceden duyurularak yeni bir sürüm olarak yayınlanır.

Destek

Sorularınız, hata bildirimleriniz mi var ya da daha yüksek bir istek sınırına mı ihtiyacınız var? Yardımcı olmaktan memnuniyet duyarız. Lütfen mesajınıza istek zamanını ve hata kodunu ekleyin – API anahtarınızı asla eklemeyin.