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

MethodPathResponse
GET/api/icon-packageapplication/json
POST/api/icon-packageapplication/zip
POST/api/generate-logoapplication/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 rounded for 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"
  ]
}