REST API · v1

MakeFav API دستاویزات

اپنے کوڈ، بلڈ اسکرپٹس اور CI پائپ لائنز سے مکمل فیویکون پیکیجز بنائیں۔ ایک درخواست کسی بھی تصویر کو favicon.ico، Apple touch آئیکنز، Android اور PWA آئیکنز، ویب مینی فیسٹ اور پیسٹ کرنے کے لیے تیار HTML میں بدل دیتی ہے۔

اس صفحے پر

فوری آغاز

MakeFav API ایک سادہ HTTPS + JSON REST API ہے۔ تمام اینڈ پوائنٹس ایک ہی بیس URL کے تحت ہیں:

https://makefav.com/api/v1
  1. مفت اکاؤنٹ بنائیں
    سائن اپ کریں، اپنے ای میل ایڈریس کی تصدیق کریں اور MakeFav نیوز لیٹر کی سبسکرپشن فعال رکھیں – مفت پلان کی بس یہی شرط ہے۔
  2. API کلید بنائیں
    اپنے اکاؤنٹ میں API کلیدوں کا صفحہ کھولیں اور ذاتی کلید بنائیں۔ یہ mf_ سے شروع ہوتی ہے اور صرف ایک بار دکھائی جاتی ہے، اس لیے اسے محفوظ جگہ پر رکھیں۔ API کلیدیں منظم کریں
  3. اپنی پہلی درخواست بھیجیں
    جنریٹ اینڈ پوائنٹ پر تصویر اپ لوڈ کریں اور واپس ملنے والی 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

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.

تصدیق

محفوظ اینڈ پوائنٹ کی ہر درخواست میں ذاتی API کلید شامل ہونی چاہیے۔ آپ اپنے اکاؤنٹ کے صفحے پر کسی بھی وقت کلیدیں بنا سکتے ہیں، نام دے سکتے ہیں اور منسوخ کر سکتے ہیں: API کلیدیں

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
کلیدیں ایسے صارف کی ہوتی ہیں جس کے ای میل ایڈریس کی تصدیق ہو چکی ہو اور جس کی نیوز لیٹر سبسکرپشن فعال ہو (مفت پلان کی شرط)۔ اگر ای میل کی تصدیق نہ ہو، نیوز لیٹر بند ہو یا اکاؤنٹ پر پابندی ہو تو ہر درخواست 403 Forbidden واپس کرتی ہے۔
API کلیدوں کو پاس ورڈ کی طرح سمجھیں: انہیں سرور یا CI سیکرٹس میں رکھیں، براؤزر کوڈ، موبائل ایپس یا پبلک ریپوزٹریز میں کبھی نہیں۔ اگر کلید لیک ہو جائے تو فوراً منسوخ کر دیں۔

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

ریٹ حدود

بطور ڈیفالٹ ہر API کلید فی گھنٹہ 100 درخواستیں کر سکتی ہے۔ ہر تصدیق شدہ جواب بتاتا ہے کہ آپ کس مقام پر ہیں:

ہیڈروضاحت
X-RateLimit-Limitموجودہ ونڈو میں اجازت شدہ درخواستوں کی زیادہ سے زیادہ تعداد۔
X-RateLimit-Remainingموجودہ ونڈو میں باقی درخواستیں۔
X-RateLimit-ResetUnix ٹائم اسٹیمپ (سیکنڈ، 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.

اینڈ پوائنٹس

اینڈ پوائنٹتصدیقوضاحت
POST /generateAPI کلیدمکمل فیویکون پیکیج بنائیں۔
GET /meAPI کلیدآپ کا اکاؤنٹ اور موجودہ ریٹ لمٹ کی صورتحال۔
GET /sizesکوئی نہیںجنریٹر کی بنائی ہوئی تمام آئیکن فائلوں اور سائزز کی فہرست۔
GET /openapi.jsonکوئی نہیںمشین کے پڑھنے کے قابل OpenAPI 3.1 اسپیسیفکیشن۔

فیویکون پیکیج بنائیں

POST/generate

ایک سورس امیج سے مکمل فیویکون پیکیج بناتا ہے۔ امیج تین طریقوں میں سے کسی ایک سے بھیجیں:

کانٹینٹ ٹائپامیج فیلڈوضاحت
multipart/form-dataimageفائل اپلوڈ۔ تجویز کردہ – سب سے مؤثر طریقہ۔
application/jsonimage_base64Base64-encoded image, either raw base64 or a data URL such as data:image/png;base64,iVBOR….
application/jsonimage_urlامیج کا عوامی http یا https URL۔ سرور اسے ڈاؤن لوڈ کرتا ہے (زیادہ سے زیادہ 10 MB)۔

معاون ان پٹ فارمیٹس: PNG، JPG، WebP، AVIF، GIF، BMP، SVG اور ICO۔ فائل کا زیادہ سے زیادہ سائز: 10 MB۔

پیرامیٹرز

تمام پیرامیٹرز اختیاری ہیں۔ انہیں فارم فیلڈز (multipart) یا JSON پراپرٹیز کے طور پر بھیجیں۔ غلط ویلیوز کی صورت میں ڈیفالٹ استعمال ہوتا ہے۔

نامٹائپ / رینجڈیفالٹوضاحت
app_namestring، زیادہ سے زیادہ 60 حروفMy Websiteآپ کی ویب سائٹ یا ایپ کا نام، جو manifest.json اور مثالی صفحے میں استعمال ہوتا ہے۔
short_namestring، زیادہ سے زیادہ 24 حروفapp_name کے پہلے 12 حروفمختصر نام جو Android ہوم اسکرین پر آئیکن کے نیچے دکھائی دیتا ہے۔
theme_color#rrggbb#ffffffبراؤزر UI کا رنگ (theme-color میٹا ٹیگ اور مینی فیسٹ)۔
tile_color#rrggbbtheme_color کے برابرWindows اسٹارٹ ٹائلز کا بیک گراؤنڈ رنگ۔
backgroundtransparent | #rrggbbtransparentبراؤزر، Android اور Windows آئیکنز کا بیک گراؤنڈ۔
apple_background#rrggbb#ffffffApple ٹچ آئیکنز اور مسک ایبل آئیکن کا بیک گراؤنڈ (iOS شفافیت کو سپورٹ نہیں کرتا)۔ اگر background کوئی رنگ ہو تو نظرانداز ہو جاتا ہے – اس کی جگہ وہی رنگ استعمال ہوتا ہے۔
paddinginteger، 0–40 (%)0امیج کے گرد خالی جگہ، آئیکن کے سائز کے فیصد کے طور پر۔
radiusinteger، 0–50 (%)0گول کونے۔ 50 سے دائرہ بنتا ہے۔ Apple آئیکنز پر لاگو نہیں ہوتا، کیونکہ iOS انہیں خود گول کرتا ہے۔
zoominteger، 50–400 (%)100آئیکن کے اندر امیج کا اسکیل۔ 100 سے زیادہ ویلیوز امیج کو کراپ کر دیتی ہیں۔
offset_x, offset_ynumber، -1 تا 10امیج کو افقی / عمودی طور پر ہلاتا ہے، آئیکن کے سائز کے ایک حصے کے طور پر۔
pathstring/آپ کے سرور پر وہ فولڈر جہاں آئیکنز رکھے جائیں گے۔ HTML اسنیپٹ، مینی فیسٹ اور browserconfig میں استعمال ہوتا ہے۔
displaystandalone | fullscreen | minimal-ui | browserstandalonemanifest میں لکھا جانے والا PWA ڈسپلے موڈ۔
pixelatedauto | 1 | 0autoپکسل آرٹ کے لیے شارپ nearest-neighbour اسکیلنگ۔ auto اسے 64 px یا اس سے چھوٹے سورسز کے لیے فعال کرتا ہے۔
maskable1 | 01Android ایڈاپٹو آئیکنز کے لیے سیف زون پیڈنگ کے ساتھ maskable-icon-512x512.png بھی بناتا ہے۔
ico_sizes16، 24، 32، 48، 64، 128، 256 کی کوما سے الگ کی گئی فہرست16,32,48favicon.ico میں شامل کیے جانے والے سائزز۔
groupsfavicon، apple، android، ms کی کوما سے الگ کی گئی فہرستfavicon,apple,android,msبنائے جانے والے آئیکن سیٹس: براؤزر فیویکونز، Apple ٹچ آئیکنز، Android / PWA آئیکنز اور Windows ٹائلز۔
formatzip | jsonzipرسپانس فارمیٹ – نیچے دیکھیں۔

رسپانس

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.

مثالی ریکویسٹ – multipart، 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>

مثالی ریکویسٹ – امیج URL کے ساتھ JSON، 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…"}
  ]
}

اپنا اکاؤنٹ حاصل کریں

GET/me

API کلید جس صارف کی ہے اس کی معلومات اور موجودہ ریٹ لمٹ کی صورتحال لوٹاتا ہے۔ کلید کی تصدیق کے لیے مفید۔ تصدیق درکار ہے؛ کوئی پیرامیٹر نہیں۔

مثالی ریکویسٹ

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

مثالی رسپانس

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

آئیکن سائزز کی فہرست

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.

مثالی ریکویسٹ

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

مثالی رسپانس

{
  "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 اسپیسیفکیشن

GET/openapi.json

اس API کی OpenAPI 3.1 تفصیل لوٹاتا ہے۔ تصدیق درکار نہیں۔ اسے Postman، Insomnia یا Swagger UI میں امپورٹ کریں، یا اپنی زبان کے لیے ٹائپڈ کلائنٹ بنانے کے لیے استعمال کریں۔

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

خرابیاں

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 اسٹیٹسایرر کوڈمطلب
400bad_requestریکویسٹ درست نہیں ہے، مثلاً کوئی امیج نہیں بھیجی گئی یا JSON باڈی غلط ہے۔
401unauthorizedAPI کلید موجود نہیں یا غلط ہے۔
403forbiddenکلید کے مالک کی ای میل کی تصدیق نہیں ہوئی، نیوز لیٹر سبسکرپشن غیر فعال ہے، یا اکاؤنٹ پر پابندی لگ چکی ہے۔
413file_too_largeامیج 10 MB سے بڑی ہے۔
415unsupported_typeفائل کی قسم یا ریکویسٹ کانٹینٹ ٹائپ سپورٹڈ نہیں ہے۔
422invalid_imageفائل کو امیج کے طور پر ڈی کوڈ نہیں کیا جا سکا، یا امیج URL ڈاؤن لوڈ نہیں ہو سکا۔
429rate_limitedبہت زیادہ ریکویسٹس۔ X-RateLimit-Reset تک انتظار کریں۔
500server_errorہماری طرف سے کوئی مسئلہ پیش آیا۔ بعد میں دوبارہ کوشش کریں؛ اگر مسئلہ برقرار رہے تو سپورٹ سے رابطہ کریں۔

آؤٹ پٹ فائلیں

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

فائلسائزگروپ
favicon.ico16, 32, 48 (قابلِ ترتیب)ہمیشہ
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

اضافی فائلیں

فائلشاملوضاحت
favicon.svgصرف SVG ان پٹ کے لیے، بغیر کراپ، زوم، پیڈنگ، کونوں یا بیک گراؤنڈ کےآپ کی SVG کی صاف کی ہوئی کاپی، ان براؤزرز کے لیے جو ویکٹر فیویکونز کو سپورٹ کرتے ہیں۔
manifest.json, site.webmanifestandroidAndroid اور انسٹال ہونے والی PWAs کے لیے ویب ایپ مینی فیسٹ (دو یکساں کاپیاں)۔
browserconfig.xmlmsآپ کے ٹائل رنگ کے ساتھ Windows ٹائل کنفیگریشن۔
readme-makefav.txtہمیشہانسٹالیشن ہدایات، جن کے آخر میں آپ کے <head> کے لیے HTML کوڈ ہے۔

کوڈ کی مثالیں

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 اپلوڈ:

# 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-انکوڈڈ امیج کے ساتھ JSON باڈی (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 کا استعمال

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>

ڈیپلائے کرنے کے بعد اپنے براؤزر کا کیش صاف کریں یا سائٹ کو پرائیویٹ ونڈو میں کھولیں – براؤزرز فیویکونز کو بہت زیادہ کیش کرتے ہیں۔

تبدیلیوں کا ریکارڈ

v1

  • MakeFav REST API کا ابتدائی عوامی ریلیز۔
  • Endpoints POST /generate, GET /me, GET /sizes and GET /openapi.json.
  • ZIP اور JSON رسپانس فارمیٹس، multipart، base64 اور URL امیج ان پٹ۔
  • فی گھنٹہ 100 ریکویسٹس کے ساتھ ذاتی API کلیدیں۔

ورژن 1 مستحکم ہے: ہم صرف اختیاری پیرامیٹرز اور فیلڈز شامل کرتے ہیں۔ بریکنگ تبدیلیاں پیشگی اطلاع کے ساتھ نئے ورژن کے طور پر جاری کی جائیں گی۔

سپورٹ

سوالات، بگ رپورٹس یا زیادہ ریٹ لمٹ چاہیے؟ ہم مدد کے لیے حاضر ہیں۔ اپنے پیغام میں ریکویسٹ کا وقت اور ایرر کوڈ ضرور لکھیں – اپنی API کلید ہرگز نہیں۔