REST API · v1

MakeFav API dokumentācija

Ģenerējiet pilnus favicon komplektus no sava koda, būvēšanas skriptiem un CI konveijeriem. Ar vienu pieprasījumu jebkurš attēls kļūst par favicon.ico, Apple touch ikonām, Android un PWA ikonām, tīmekļa manifestu un gatavu HTML kodu.

Šajā lapā

Ātrā sākšana

MakeFav API ir vienkāršs HTTPS + JSON REST API. Visi galapunkti atrodas zem viena bāzes URL:

https://makefav.com/api/v1
  1. Izveidojiet bezmaksas kontu
    Reģistrējieties, apstipriniet e-pasta adresi un saglabājiet aktīvu MakeFav jaunumu abonementu – tas ir vienīgais bezmaksas plāna nosacījums.
  2. Izveidojiet API atslēgu
    Atveriet sava konta lapu API atslēgas un izveidojiet personīgo atslēgu. Tā sākas ar mf_ un tiek parādīta tikai vienu reizi, tāpēc glabājiet to drošībā. Pārvaldīt API atslēgas
  3. Nosūtiet savu pirmo pieprasījumu
    Augšupielādējiet attēlu ģenerēšanas galapunktā un saglabājiet atgriezto ZIP failu:
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.

Autentifikācija

Katram pieprasījumam aizsargātā galapunktā jāiekļauj personīgā API atslēga. Atslēgas varat izveidot, nosaukt un atsaukt jebkurā laikā sava konta lapā: API atslēgas

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
Atslēgas pieder lietotājam, kura e-pasta adrese ir apstiprināta un kura jaunumu abonements ir aktīvs (bezmaksas plāna nosacījums). Ja e-pasts nav apstiprināts, jaunumu abonements ir atslēgts vai konts ir bloķēts, katrs pieprasījums atgriež 403 Forbidden.
Izturieties pret API atslēgām kā pret parolēm: glabājiet tās serverī vai CI noslēpumos, nekad pārlūka kodā, mobilajās lietotnēs vai publiskos repozitorijos. Ja atslēga noplūst, nekavējoties to atsauciet.

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

Pieprasījumu ierobežojumi

Pēc noklusējuma katra API atslēga drīkst veikt 100 pieprasījumus stundā. Katra autentificētā atbilde parāda, cik daudz jums vēl ir atlicis:

GalveneApraksts
X-RateLimit-LimitMaksimālais pieprasījumu skaits, kas atļauts pašreizējā periodā.
X-RateLimit-RemainingAtlikušie pieprasījumi pašreizējā periodā.
X-RateLimit-ResetUnix laikspiedols (sekundēs, UTC), kad periods tiek atiestatīts.
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.

Galapunkti

GalapunktsAutentifikācijaApraksts
POST /generateAPI atslēgaIzveidot pilnu favicon komplektu.
GET /meAPI atslēgaJūsu konts un pašreizējais pieprasījumu ierobežojuma statuss.
GET /sizesNavVisu ikonu failu un izmēru saraksts, ko ģenerators izveido.
GET /openapi.jsonNavMašīnlasāma OpenAPI 3.1 specifikācija.

Ģenerēt favicon paketi

POST/generate

Izveido pilnu favicon paketi no viena avota attēla. Nosūtiet attēlu vienā no trim veidiem:

Satura veidsAttēla lauksApraksts
multipart/form-dataimageFaila augšupielāde. Ieteicams – visefektīvākā iespēja.
application/jsonimage_base64Base64-encoded image, either raw base64 or a data URL such as data:image/png;base64,iVBOR….
application/jsonimage_urlAttēla publiskais http vai https URL. Serveris to lejupielādē (maks. 10 MB).

Atbalstītie ievades formāti: PNG, JPG, WebP, AVIF, GIF, BMP, SVG un ICO. Maksimālais faila izmērs: 10 MB.

Parametri

Visi parametri ir neobligāti. Sūtiet tos kā formas laukus (multipart) vai JSON īpašības. Nederīgas vērtības tiek aizstātas ar noklusējuma vērtību.

VārdsTips / diapazonsNoklusējumsApraksts
app_namevirkne, maks. 60 rakstzīmesMy WebsiteJūsu vietnes vai lietotnes nosaukums, tiek izmantots manifest.json un piemēra lapā.
short_namevirkne, maks. 24 rakstzīmespirmās 12 app_name rakstzīmesĪsais nosaukums, kas tiek rādīts zem ikonas Android sākuma ekrānos.
theme_color#rrggbb#ffffffPārlūka saskarnes krāsa (theme-color meta tags un manifests).
tile_color#rrggbbtāda pati kā theme_colorWindows sākuma flīžu fona krāsa.
backgroundtransparent | #rrggbbtransparentPārlūka, Android un Windows ikonu fons.
apple_background#rrggbb#ffffffApple touch ikonu un maskable ikonas fons (iOS neatbalsta caurspīdīgumu). Tiek ignorēts, ja fons ir krāsa – tad tiek izmantota šī krāsa.
paddingvesels skaitlis, 0–40 (%)0Tukša vieta ap attēlu procentos no ikonas izmēra.
radiusvesels skaitlis, 0–50 (%)0Noapaļoti stūri. Ar 50 iegūst apli. Netiek piemērots Apple ikonām, ko iOS noapaļo pats.
zoomvesels skaitlis, 50–400 (%)100Attēla mērogs ikonas iekšienē. Vērtības virs 100 apgriež attēlu.
offset_x, offset_yskaitlis, no -1 līdz 10Pārvieto attēlu horizontāli / vertikāli kā ikonas izmēra daļu.
pathvirkne/Mape jūsu serverī, kurā atradīsies ikonas. Tiek izmantota HTML fragmentā, manifestā un browserconfig.
displaystandalone | fullscreen | minimal-ui | browserstandalonePWA attēlošanas režīms, kas tiek ierakstīts manifestā.
pixelatedauto | 1 | 0autoAsa tuvākā kaimiņa mērogošana pikseļu mākslai. auto to ieslēdz avotiem ar 64 px vai mazāk.
maskable1 | 01Izveidot arī maskable-icon-512x512.png ar drošās zonas atkāpi Android adaptīvajām ikonām.
ico_sizesar komatiem atdalīts saraksts: 16, 24, 32, 48, 64, 128, 25616,32,48Izmēri, kas iekļauti favicon.ico.
groupsar komatiem atdalīts saraksts: favicon, apple, android, msfavicon,apple,android,msĢenerējamie ikonu komplekti: pārlūka favicon, Apple touch ikonas, Android / PWA ikonas un Windows flīzes.
formatzip | jsonzipAtbildes formāts – skatiet zemāk.

Atbilde

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.

Pieprasījuma piemērs – multipart, ZIP atbilde

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>

Pieprasījuma piemērs – JSON ar attēla URL, JSON atbilde

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

Iegūt savu kontu

GET/me

Atgriež lietotāju, kuram pieder API atslēga, un pašreizējo pieprasījumu limita statusu. Noderīgi atslēgas pārbaudei. Nepieciešama autentifikācija; bez parametriem.

Pieprasījuma piemērs

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

Atbildes piemērs

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

Ikonu izmēru saraksts

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.

Pieprasījuma piemērs

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

Atbildes piemērs

{
  "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 specifikācija

GET/openapi.json

Atgriež šī API OpenAPI 3.1 aprakstu. Bez autentifikācijas. Importējiet to Postman, Insomnia vai Swagger UI, vai izmantojiet, lai ģenerētu tipizētu klientu savai valodai.

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

Kļūdas

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 statussKļūdas kodsNozīme
400bad_requestPieprasījums ir nepareizi veidots, piemēram, netika nosūtīts attēls vai JSON saturs ir nederīgs.
401unauthorizedAPI atslēga trūkst vai ir nederīga.
403forbiddenAtslēgas īpašnieka e-pasts nav apstiprināts, jaunumu abonements ir atspējots vai konts ir bloķēts.
413file_too_largeAttēls ir lielāks par 10 MB.
415unsupported_typeFaila tips vai pieprasījuma satura veids netiek atbalstīts.
422invalid_imageFailu neizdevās atkodēt kā attēlu vai attēla URL neizdevās lejupielādēt.
429rate_limitedPārāk daudz pieprasījumu. Uzgaidiet līdz X-RateLimit-Reset.
500server_errorMūsu pusē radās kļūda. Mēģiniet vēlāk; ja problēma saglabājas, sazinieties ar atbalstu.

Izvades faili

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

FailsIzmērsGrupa
favicon.ico16, 32, 48 (konfigurējams)vienmēr
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

Papildu faili

FailsIekļautsApraksts
favicon.svgTikai SVG ievadei bez apgriešanas, tālummaiņas, atkāpes, stūriem vai fonaJūsu SVG attīrīta kopija pārlūkiem, kas atbalsta vektoru favicon.
manifest.json, site.webmanifestandroidTīmekļa lietotnes manifests Android un instalējamām PWA (divas identiskas kopijas).
browserconfig.xmlmsWindows flīžu konfigurācija ar jūsu flīžu krāsu.
readme-makefav.txtvienmērInstalēšanas instrukcijas ar HTML kodu jūsu <head> beigās.

Koda piemēri

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 augšupielāde:

# 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 saturs ar base64 kodētu attēlu (nepieciešams 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; }

HTML lietošana

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>

Pēc izvietošanas notīriet pārlūka kešatmiņu vai atveriet vietni privātajā logā – pārlūki favicon kešo ļoti agresīvi.

Izmaiņu žurnāls

v1

  • MakeFav REST API pirmā publiskā versija.
  • Endpoints POST /generate, GET /me, GET /sizes and GET /openapi.json.
  • ZIP un JSON atbildes formāti, multipart, base64 un URL attēla ievade.
  • Personiskās API atslēgas ar 100 pieprasījumiem stundā.

1. versija ir stabila: mēs pievienojam tikai neobligātus parametrus un laukus. Izmaiņas, kas pārtrauc saderību, tiks izlaistas kā jauna versija ar iepriekšēju paziņojumu.

Atbalsts

Jautājumi, kļūdu ziņojumi vai nepieciešams augstāks pieprasījumu limits? Mēs labprāt palīdzēsim. Lūdzu, ziņojumā norādiet pieprasījuma laiku un kļūdas kodu – nekādā gadījumā ne savu API atslēgu.