Machine API
ArchLogo API
Generate favicon and app icon ZIP packages from JSON. The same contract is available as live JSON at GET /api/icon-package.
Endpoints
| Method | Path | Response |
|---|---|---|
| GET | /api/icon-package | application/json |
| POST | /api/icon-package | application/zip |
| POST | /api/generate-logo | application/zip |
Request Body
{
"projectName": "my-app",
"bgColor": "#030816",
"shape": "rounded",
"layers": [
{
"enabled": true,
"text": "A",
"font": "Roboto",
"textColor": "#EEEEEE",
"fontSize": 400,
"fontWeight": "normal",
"offsetX": 0,
"offsetY": 0,
"rotation": 0,
"flipHorizontal": false,
"flipVertical": false
},
{
"enabled": false,
"text": "",
"font": "Playfair Display",
"textColor": "#EEEEEE",
"fontSize": 400,
"fontWeight": "normal",
"offsetX": 42,
"offsetY": 42,
"rotation": 0,
"flipHorizontal": false,
"flipVertical": false
}
]
}Output
- favicon-16x16.png
- favicon-32x32.png
- favicon.ico
- apple-touch-icon.png
- android-chrome-192x192.png
- android-chrome-512x512.png
- manifest.json
- logo.svg
- logo.txt
Constraints
- Colors
- Hex, RGB, HSL, and HSV values.
- Text
- Up to four characters per layer.
- Shape names
- Use
roundedfor Squircle. - Layer order
- Layer 1 renders above Layer 2.
Embedded Machine Spec
This page includes the full contract in script#archlogo-api-spec.
{
"name": "ArchLogo Icon Package API",
"productName": "ArchLogo",
"documentationUrl": "https://archlogo.com/api",
"discoveryUrl": "https://archlogo.com/api/icon-package",
"endpoints": [
{
"method": "GET",
"path": "/api/icon-package",
"responseType": "application/json",
"purpose": "Return the live API contract, supported fonts, shape options, and output files."
},
{
"method": "POST",
"path": "/api/icon-package",
"accepts": "application/json",
"responseType": "application/zip",
"purpose": "Generate a favicon and app icon package from JSON options."
},
{
"method": "POST",
"path": "/api/generate-logo",
"accepts": "application/json",
"responseType": "application/zip",
"purpose": "Compatibility alias for /api/icon-package."
}
],
"request": {
"projectName": "my-app",
"bgColor": "#030816",
"shape": "rounded",
"layers": [
{
"enabled": true,
"text": "A",
"font": "Roboto",
"textColor": "#EEEEEE",
"fontSize": 400,
"fontWeight": "normal",
"offsetX": 0,
"offsetY": 0,
"rotation": 0,
"flipHorizontal": false,
"flipVertical": false
},
{
"enabled": false,
"text": "",
"font": "Playfair Display",
"textColor": "#EEEEEE",
"fontSize": 400,
"fontWeight": "normal",
"offsetX": 42,
"offsetY": 42,
"rotation": 0,
"flipHorizontal": false,
"flipVertical": false
}
]
},
"outputFiles": [
"favicon-16x16.png",
"favicon-32x32.png",
"favicon.ico",
"apple-touch-icon.png",
"android-chrome-192x192.png",
"android-chrome-512x512.png",
"manifest.json",
"logo.svg",
"logo.txt"
],
"shapeOptions": [
"square",
"rounded",
"circle"
],
"shapeLabels": {
"square": "Square",
"rounded": "Squircle",
"circle": "Circle"
},
"colorFormats": [
"hex",
"rgb()",
"rgba()",
"hsl()",
"hsla()",
"hsv()",
"hsva()",
"hsb()",
"hsba()"
],
"fontWeightOptions": [
"normal",
"bold"
],
"supportedFonts": [
"Merriweather",
"Georgia",
"Roboto Slab",
"Playfair Display",
"Caudex",
"Lobster",
"Open Sans",
"Inter",
"Roboto",
"Montserrat",
"Lato",
"Poppins",
"Nunito",
"Raleway",
"Inconsolata",
"Noto Sans Math",
"Do Hyeon"
]
}