REST API · v1

Nyaraka za API ya MakeFav

Tengeneza vifurushi kamili vya favicon kutoka kwenye msimbo wako, skripti za ujenzi na mifumo ya CI. Ombi moja hubadilisha picha yoyote kuwa favicon.ico, Apple touch icon, aikoni za Android na PWA, web manifest na HTML iliyo tayari kubandikwa.

Kwenye ukurasa huu

Kuanza haraka

API ya MakeFav ni REST API rahisi ya HTTPS + JSON. Endpoint zote ziko chini ya URL moja ya msingi:

https://makefav.com/api/v1
  1. Fungua akaunti bila malipo
    Jisajili, thibitisha anwani yako ya barua pepe na uendelee kuwa mfuasi wa jarida la MakeFav – hiyo ndiyo sharti pekee la mpango wa bure.
  2. Unda API key
    Fungua ukurasa wa API keys kwenye akaunti yako na uunde ufunguo wako binafsi. Huanza na mf_ na huonyeshwa mara moja tu, kwa hivyo uuhifadhi kwa usalama. Simamia API keys
  3. Tuma ombi lako la kwanza
    Pakia picha kwenye endpoint ya generate kisha uhifadhi faili ya ZIP itakayorejeshwa:
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.

Uthibitishaji

Kila ombi kwa endpoint iliyolindwa lazima lijumuishe API key binafsi. Unaweza kuunda, kutaja majina na kufuta funguo wakati wowote kwenye ukurasa wa akaunti yako: API keys

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
Funguo huwa za mtumiaji ambaye barua pepe yake imethibitishwa na usajili wake wa jarida uko hai (sharti la mpango wa bure). Ikiwa barua pepe haijathibitishwa, jarida limezimwa au akaunti imepigwa marufuku, kila ombi hurejesha 403 Forbidden.
Tendea API keys kama manenosiri: zihifadhi kwenye seva au kwenye siri za CI, kamwe si kwenye msimbo wa kivinjari, programu za simu au hazina za umma. Futa ufunguo mara moja ukivuja.

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

Vikomo vya maombi

Kwa chaguo-msingi kila API key inaweza kutuma maombi 100 kwa saa. Kila jibu lililothibitishwa hukuonyesha ulipofikia:

KichwaMaelezo
X-RateLimit-LimitIdadi ya juu zaidi ya maombi yanayoruhusiwa katika kipindi cha sasa.
X-RateLimit-RemainingMaombi yaliyosalia katika kipindi cha sasa.
X-RateLimit-ResetUnix timestamp (sekunde, UTC) kipindi kinapoanza upya.
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.

Endpoint

EndpointUthibitishajiMaelezo
POST /generateAPI keyUnda kifurushi kamili cha favicon.
GET /meAPI keyAkaunti yako na hali ya sasa ya kikomo cha maombi.
GET /sizesHakunaOrodha ya faili zote za ikoni na ukubwa unaozalishwa na jenereta.
GET /openapi.jsonHakunaMaelezo ya OpenAPI 3.1 yanayosomeka na mashine.

Tengeneza kifurushi cha favicon

POST/generate

Huunda kifurushi kamili cha favicon kutoka picha moja ya chanzo. Tuma picha kwa mojawapo ya njia tatu:

Aina ya maudhuiSehemu ya pichaMaelezo
multipart/form-dataimageKupakia faili. Inapendekezwa – ndiyo njia yenye ufanisi zaidi.
application/jsonimage_base64Base64-encoded image, either raw base64 or a data URL such as data:image/png;base64,iVBOR….
application/jsonimage_urlURL ya umma ya http au https ya picha. Seva huipakua (kiwango cha juu MB 10).

Miundo ya ingizo inayotumika: PNG, JPG, WebP, AVIF, GIF, BMP, SVG na ICO. Ukubwa wa juu wa faili: MB 10.

Vigezo

Vigezo vyote ni vya hiari. Vitume kama sehemu za fomu (multipart) au kama sifa za JSON. Thamani zisizo sahihi hutumia chaguo-msingi.

JinaAina / kiwangoChaguo-msingiMaelezo
app_namemfuatano wa maandishi, herufi 60 kwa juuMy WebsiteJina la tovuti au programu yako, linalotumika katika manifest.json na ukurasa wa mfano.
short_namemfuatano wa maandishi, herufi 24 kwa juuherufi 12 za kwanza za app_nameJina fupi linaloonyeshwa chini ya ikoni kwenye skrini ya mwanzo ya Android.
theme_color#rrggbb#ffffffRangi ya kiolesura cha kivinjari (lebo ya meta ya theme-color na manifest).
tile_color#rrggbbsawa na theme_colorRangi ya mandharinyuma ya vigae vya Windows Start.
backgroundtransparent | #rrggbbtransparentMandharinyuma ya ikoni za kivinjari, Android na Windows.
apple_background#rrggbb#ffffffMandharinyuma ya ikoni za Apple touch na ikoni ya maskable (iOS haitumii uwazi). Hupuuzwa wakati mandharinyuma ni rangi – rangi hiyo hutumika badala yake.
paddingnambari kamili, 0–40 (%)0Nafasi tupu kuzunguka picha, kama asilimia ya ukubwa wa ikoni.
radiusnambari kamili, 0–50 (%)0Pembe zilizozungushwa. 50 huunda duara. Haitumiki kwa ikoni za Apple, ambazo iOS huzizungusha yenyewe.
zoomnambari kamili, 50–400 (%)100Kipimo cha picha ndani ya ikoni. Thamani zaidi ya 100 hukata picha.
offset_x, offset_ynambari, -1 hadi 10Husogeza picha kwa mlalo / wima, kama sehemu ya ukubwa wa ikoni.
pathmfuatano wa maandishi/Folda kwenye seva yako ambako ikoni zitakaa. Hutumika katika msimbo wa HTML, manifest na browserconfig.
displaystandalone | fullscreen | minimal-ui | browserstandaloneHali ya onyesho la PWA inayoandikwa kwenye manifest.
pixelatedauto | 1 | 0autoUkuzaji mkali wa nearest-neighbour kwa pixel art. auto huuwasha kwa vyanzo vya px 64 au chini.
maskable1 | 01Pia tengeneza maskable-icon-512x512.png yenye nafasi salama ya pembeni kwa ikoni zinazojirekebisha za Android.
ico_sizesorodha iliyotenganishwa kwa koma ya 16, 24, 32, 48, 64, 128, 25616,32,48Ukubwa unaowekwa ndani ya favicon.ico.
groupsorodha iliyotenganishwa kwa koma ya favicon, apple, android, msfavicon,apple,android,msSeti za ikoni za kutengeneza: favicon za kivinjari, ikoni za Apple touch, ikoni za Android / PWA na vigae vya Windows.
formatzip | jsonzipMuundo wa jibu – tazama hapa chini.

Jibu

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.

Mfano wa ombi – multipart, jibu la 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>

Mfano wa ombi – JSON yenye URL ya picha, jibu la 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…"}
  ]
}

Pata akaunti yako

GET/me

Hurejesha mtumiaji anayemiliki ufunguo wa API na hali ya sasa ya kikomo cha maombi. Ni muhimu kuthibitisha ufunguo. Inahitaji uthibitishaji; hakuna vigezo.

Mfano wa ombi

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

Mfano wa jibu

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

Orodhesha ukubwa wa ikoni

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.

Mfano wa ombi

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

Mfano wa jibu

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

Maelezo ya OpenAPI

GET/openapi.json

Hurejesha maelezo ya OpenAPI 3.1 ya API hii. Hakuna uthibitishaji. Yaingize kwenye Postman, Insomnia au Swagger UI, au yatumie kutengeneza mteja mwenye aina kwa lugha yako.

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

Hitilafu

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."
  }
}
Hali ya HTTPMsimbo wa hitilafuMaana
400bad_requestOmbi limeundwa vibaya, kwa mfano hakuna picha iliyotumwa au mwili wa JSON si sahihi.
401unauthorizedUfunguo wa API haupo au si sahihi.
403forbiddenBarua pepe ya mmiliki wa ufunguo haijathibitishwa, usajili wa jarida umezimwa, au akaunti imepigwa marufuku.
413file_too_largePicha ni kubwa kuliko MB 10.
415unsupported_typeAina ya faili au aina ya maudhui ya ombi haitumiki.
422invalid_imageFaili haikuweza kusomwa kama picha, au URL ya picha haikuweza kupakuliwa.
429rate_limitedMaombi mengi mno. Subiri hadi X-RateLimit-Reset.
500server_errorHitilafu imetokea upande wetu. Jaribu tena baadaye; wasiliana na usaidizi tatizo likiendelea.

Faili za matokeo

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

FailiUkubwaKundi
favicon.ico16, 32, 48 (inaweza kusanidiwa)daima
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

Faili za ziada

FailiImejumuishwaMaelezo
favicon.svgKwa ingizo la SVG pekee bila kukata, kukuza, nafasi ya pembeni, pembe au mandharinyumaNakala iliyosafishwa ya SVG yako kwa vivinjari vinavyotumia favicon za vekta.
manifest.json, site.webmanifestandroidManifest ya programu ya wavuti kwa Android na PWA zinazoweza kusakinishwa (nakala mbili zinazofanana).
browserconfig.xmlmsUsanidi wa vigae vya Windows wenye rangi ya kigae chako.
readme-makefav.txtdaimaMaelekezo ya usakinishaji yenye msimbo wa HTML wa <head> yako mwishoni.

Mifano ya msimbo

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.

Kupakia kwa 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; }

Mwili wa JSON wenye picha iliyosimbwa kwa base64 (inahitaji 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; }

Matumizi ya 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>

Baada ya kupeleka, futa akiba ya kivinjari chako au fungua tovuti katika dirisha la faragha – vivinjari huhifadhi favicon kwa nguvu.

Orodha ya mabadiliko

v1

  • Toleo la kwanza la umma la MakeFav REST API.
  • Endpoints POST /generate, GET /me, GET /sizes and GET /openapi.json.
  • Miundo ya jibu ya ZIP na JSON, multipart, base64 na ingizo la picha kwa URL.
  • Funguo binafsi za API zenye maombi 100 kwa saa.

Toleo la 1 ni thabiti: tunaongeza tu vigezo na sehemu za hiari. Mabadiliko yanayovunja yatatolewa kama toleo jipya kwa taarifa ya mapema.

Msaada

Una maswali, ripoti za hitilafu au unahitaji kikomo cha juu zaidi? Tuko tayari kusaidia. Tafadhali weka muda wa ombi na msimbo wa hitilafu katika ujumbe wako – kamwe usiweke ufunguo wako wa API.