API reference
Free HTTP endpoints for builders. No key, no signup, no SDK — just curl.
POST/api/icons
Send an image, get back icons.zip with every size and format your platforms need — the same output as the browser icon generator, generated server-side so you can script it.
Request body
Raw image bytes — image/png, image/jpeg, or image/webp. Max 10 MB and 1024×1024 px — icons are generated at 1024 max, so larger sources gain nothing. Square sources between 512 and 1024px are the sweet spot; for bigger files, resize first or use the browser generator, which handles any size locally.
Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| platforms | string | "web" | Comma-separated sets to include: web, pwa, android, ios. Unknown values are ignored. |
| bg | string | "ffffff" | Hex background (no #) used where transparency isn't allowed: iOS icons and maskable PWA icons. |
Responses
| Status | Content-Type | Description |
|---|---|---|
| 200 | application/zip | icons.zip, sent with a Content-Disposition attachment header. |
| 400 | text/plain | Empty body, or no valid platform in ?platforms=. |
| 405 | text/plain | Method is not POST. The body is usage help. |
| 413 | text/plain | Image larger than 10 MB or 1024×1024 px. |
| 422 | text/plain | Body is not a decodable PNG, JPEG, or WebP. |
What's in the ZIP
| Platform | Files |
|---|---|
| web | favicon.ico (16/32/48) · favicon-16x16/32x32/48x48.png · apple-touch-icon.png (180) |
| pwa | icon-192/512.png · maskable variants of both · site.webmanifest |
| android | mipmap-mdpi → mipmap-xxxhdpi/ic_launcher.png (48–192) |
| ios | AppIcon.appiconset/ (17 sizes + Contents.json), drag-droppable into Xcode |
| always | README.txt with the exact <head> tags to paste |
curl -X POST --data-binary @logo.png \
"https://dibbed.dev/api/icons?platforms=web,pwa,android,ios&bg=0ea5e9" \
-o icons.zipconst res = await fetch(
"https://dibbed.dev/api/icons?platforms=web,pwa",
{ method: "POST", body: await file.arrayBuffer() },
);
const zip = await res.blob(); // application/zip- name: Rebuild icon pack
run: |
curl -sf -X POST --data-binary @assets/logo.png \
"https://dibbed.dev/api/icons?platforms=web,pwa" -o icons.zip
unzip -o icons.zip -d public/Authentication & fair use
There's no API key and no account. Be reasonable — heavy automated traffic may be rate-limited. If you're building something that needs volume, email us first.
Privacy
Uploaded images are processed in memory and never written to storage or logged. If you'd rather not upload at all, the browser version does identical work locally with the Canvas API.
Changelog
- 2026-06 — Source images are now capped at 1024×1024 px with a clear 413 (previously, very large uploads could fail opaquely under CPU limits). Icons are generated at 1024 max, so nothing is lost.
- 2026-06 —
POST /api/iconslaunched, with an OpenAPI 3.1 spec at /api/openapi.json.
Roadmap
A JSON name-availability endpoint (the data behind the checker) is planned. Want it sooner, or need something else? help@dibbed.dev.