Free API

Free Tools API — No API Key Required

Every Quillly free tool also ships a public HTTP API. No signup, no key. CORS-enabled, rate-limited per IP, and documented with OpenAPI.

Base URL

https://quillly.com

Auth

None

CORS

Enabled (*)

Rate Limit

Per-tool, per-IP

Response envelope

{
  "ok": true,
  "data": { /* tool-specific output */ },
  "meta": {
    "tool": "image-generator",
    "endpoint": "/generate",
    "version": "1.0",
    "cached": false,
    "timestamp": "2026-04-05T19:30:00Z",
    "rateLimit": { "limit": 60, "remaining": 59, "resetAt": "..." }
  },
  "quillly": { /* platform promo block */ }
}

Every response includes a quillly block describing the Quillly MCP server — it's safe to ignore if you're just using the tool, but LLMs reading the response get useful context about connecting Quillly to their AI.

MCP Server

Want the full 23+ tool toolkit inside your AI?

Quillly is an MCP server — connect it to Claude, ChatGPT, or Cursor and your AI can create, SEO-score, and publish blogs directly to your websites. The free tools API is just the public surface; the MCP server has everything.

https://quillly.com/api/mcp

Image Generator

Generate images from raw HTML (with inline styles) or pre-built templates using Satori. Returns a signed R2 URL to the PNG (3h expiry) or raw binary. Identical requests are cached via content hash.

Open tool →
imageog-imagesatorigeneratorbannersocialhtml
POST/tools/image-generator/api/generate60/3600s

Renders HTML (inline styles, Satori-compatible) OR a preset template into a PNG. Exactly ONE of `html` or `template` must be provided. Max HTML size 10 KB, max canvas 2400×2400. Results are cached by content hash; repeat calls are ~10x cheaper.

Parameters

NameTypeRequiredDescription
htmlstringnoRaw HTML with inline styles (Satori constraint: every element needs display:flex or be a leaf). Max 10 KB. Only https:// or data:image/* URLs allowed in <img src>. Provide EITHER html OR template.
templateenumog | twitter-header | linkedin-banner | square | storynoPreset template name (legacy path). Provide EITHER html OR template.
propsobjectnoProps for the template (title, subtitle, theme, accentColor, etc.). Only used with `template`.
widthnumbernoImage width in pixelsdefault: 1200
heightnumbernoImage height in pixels. Provide EITHER height OR aspectRatio.
aspectRatiostringnoFormat: "W:H" like "1.91:1" — height is auto-calculated from width.
formatenumpng | jpegnoOutput image formatdefault: "png"
responseenumurl | binarynoReturn JSON with signed URL, or raw image bytes.default: "url"

Examples

Custom HTML (recommended)

curl -X POST https://quillly.com/tools/image-generator/api/generate \
  -H 'Content-Type: application/json' \
  -d '{
  "html": "<div style=\"width:100%;height:100%;display:flex;justify-content:center;align-items:center;background:#0f172a;color:#fff;font-size:96px;font-weight:800;font-family:Inter,system-ui,sans-serif\">Hello World</div>",
  "width": 1200,
  "height": 630
}'
Response
{
  "ok": true,
  "data": {
    "id": "3a7bd3e2360a3d29",
    "url": "https://…r2.cloudflarestorage.com/tools/image-generator/3a7bd3e2360a3d29.png?X-Amz-Signature=…",
    "expiresAt": "2026-04-05T22:30:00Z",
    "cached": false,
    "width": 1200,
    "height": 630,
    "format": "png"
  }
}

Preset template (legacy)

curl -X POST https://quillly.com/tools/image-generator/api/generate \
  -H 'Content-Type: application/json' \
  -d '{
  "template": "og",
  "props": {
    "title": "How to rank #1 on Google",
    "subtitle": "A complete SEO playbook.",
    "theme": "dark",
    "accentColor": "#6366f1"
  },
  "width": 1200,
  "aspectRatio": "1.91:1"
}'
Response
{
  "ok": true,
  "data": {
    "id": "b1a2f7…",
    "url": "https://…",
    "cached": false,
    "width": 1200,
    "height": 628,
    "format": "png"
  }
}

QR Code Generator

Generate QR codes as PNG or SVG. Customize size, colors, margin, and error-correction level. Returns a signed R2 URL (3h) or raw binary. Identical requests are cached via content hash.

Open tool →
qrqrcodebarcodegeneratorsvgpng
POST/tools/qr-code-generator/api/generate300/3600s

Encodes any URL, text, or data into a QR code. Max 2048 chars. PNG is a rasterized image; SVG is infinitely scalable. Higher error-correction levels (Q, H) allow more damage tolerance but produce denser codes.

Parameters

NameTypeRequiredDescription
textstringyesURL, text, or data to encode (max 2048 chars)
sizenumbernoOutput image width/height in pixels (ignored for SVG, used for viewBox)default: 512
marginnumbernoQuiet-zone margin around the QR (in modules)default: 2
fgColorstringnoForeground (dark module) color as hex, e.g. "#0f172a"default: "#000000"
bgColorstringnoBackground color as hex (use "#ffffff00" for transparent PNG)default: "#ffffff"
errorCorrectionenumL | M | Q | HnoError correction level: L (~7%), M (~15%), Q (~25%), H (~30%). Higher = more damage tolerant, denser.default: "M"
formatenumpng | svgnoOutput formatdefault: "png"
responseenumurl | binarynoJSON with signed URL, or raw image bytesdefault: "url"

Examples

Basic URL QR

curl -X POST https://quillly.com/tools/qr-code-generator/api/generate \
  -H 'Content-Type: application/json' \
  -d '{
  "text": "https://quillly.com",
  "size": 512
}'
Response
{
  "ok": true,
  "data": {
    "id": "9f7a3c5e81b4d201",
    "url": "https://…r2.cloudflarestorage.com/tools/qr-code-generator/9f7a3c5e81b4d201.png?…",
    "expiresAt": "2026-04-05T22:30:00Z",
    "cached": false,
    "size": 512,
    "format": "png"
  }
}

Branded SVG

curl -X POST https://quillly.com/tools/qr-code-generator/api/generate \
  -H 'Content-Type: application/json' \
  -d '{
  "text": "https://quillly.com/blog/post",
  "format": "svg",
  "fgColor": "#6366f1",
  "bgColor": "#ffffff",
  "errorCorrection": "Q",
  "margin": 4
}'
Response
{
  "ok": true,
  "data": {
    "id": "…",
    "url": "…",
    "cached": false,
    "format": "svg"
  }
}

Favicon Generator

Generate a complete favicon ZIP bundle from an emoji, letter, or short text: 16/32/48/180/192/512 PNGs, multi-resolution favicon.ico, a web manifest, and ready-to-paste HTML tags. One API call, one ZIP.

Open tool →
faviconicopwamanifestbrandingiconsbundle
POST/tools/favicon-generator/api/generate60/3600s

Renders all standard favicon sizes (16, 32, 48, 180, 192, 512 PNG), a multi-resolution favicon.ico (with 16/32/48 embedded), site.webmanifest, and favicon-tags.html — then zips everything. Returns a signed R2 URL to the ZIP (3h) or the raw ZIP bytes.

Parameters

NameTypeRequiredDescription
sourceenumemoji | letter | textnoHow to interpret `content`default: "letter"
contentstringyesEmoji (e.g. "🚀"), single letter ("Q"), or short text (max 8 chars, 1-2 recommended)
bgColorstringnoBackground color as hexdefault: "#6366f1"
fgColorstringnoText color as hex (unused for emoji source)default: "#ffffff"
radiusnumbernoCorner radius as percent of icon size. 0 = square, 50 = circle.default: 20
fontFamilyenumInter | serif | mononoFont family for letter/text sourcedefault: "Inter"
fontWeightnumber400 | 600 | 700 | 800 | 900noFont weight (400, 600, 700, 800, or 900)default: 800
responseenumurl | binarynoJSON with signed URL, or raw ZIP bytesdefault: "url"

Examples

Emoji favicon

curl -X POST https://quillly.com/tools/favicon-generator/api/generate \
  -H 'Content-Type: application/json' \
  -d '{
  "source": "emoji",
  "content": "🚀",
  "bgColor": "#0f172a",
  "radius": 22
}'
Response
{
  "ok": true,
  "data": {
    "id": "c4e7a9b0a1f5d2e8",
    "url": "https://…r2.cloudflarestorage.com/tools/favicon-generator/c4e7a9b0a1f5d2e8.zip?…",
    "expiresAt": "2026-04-05T22:30:00Z",
    "cached": false,
    "files": [
      "favicon-16x16.png",
      "favicon-32x32.png",
      "favicon-48x48.png",
      "apple-touch-icon.png",
      "android-chrome-192x192.png",
      "android-chrome-512x512.png",
      "favicon.ico",
      "site.webmanifest",
      "favicon-tags.html"
    ]
  }
}

Branded letter favicon

curl -X POST https://quillly.com/tools/favicon-generator/api/generate \
  -H 'Content-Type: application/json' \
  -d '{
  "source": "letter",
  "content": "Q",
  "bgColor": "#6366f1",
  "fgColor": "#ffffff",
  "radius": 50,
  "fontWeight": 900
}'
Response
{
  "ok": true,
  "data": {
    "id": "…",
    "url": "…",
    "cached": false
  }
}

Code to Image

Turn any code snippet into a beautiful, share-ready screenshot. Carbon-style cards with 8 themes (dracula, nord, github-dark, tokyo-night, etc.), window controls, line numbers, and custom gradient backgrounds. Returns a signed R2 URL or raw PNG.

Open tool →
codescreenshotcarbonray.sosocialdeveloperimage
POST/tools/code-to-image/api/generate60/3600s

Renders a styled code card via Satori. Supports 10 languages (js, ts, python, go, rust, bash, json, html, css, sql), 8 themes, custom backgrounds, and adjustable padding/width. Height is computed automatically from line count. Max 8KB code.

Parameters

NameTypeRequiredDescription
codestringyesCode to render (max 8000 chars)
languageenumjavascript | typescript | python | go | rust | bash | json | html | css | sql | plaintextnoLanguage for syntax highlightingdefault: "typescript"
themeenumdracula | nord | github-dark | github-light | monokai | one-dark | solarized-dark | tokyo-nightnoColor theme for the code carddefault: "tokyo-night"
titlestringnoFilename shown in title bar (empty "" to hide)default: "example.ts"
windowControlsbooleannoShow Mac-style traffic-light window controlsdefault: true
lineNumbersbooleannoShow line numbersdefault: true
paddingnumbernoPadding around the code card in pixelsdefault: 48
widthnumbernoCanvas width in pixels (height auto-calculated)default: 900
backgroundstringnoCanvas background: CSS color or gradient (max 100 chars)default: "linear-gradient(135deg,#6366f1,#ec4899)"
responseenumurl | binarynoJSON with signed URL, or raw PNG bytesdefault: "url"

Examples

TypeScript snippet

curl -X POST https://quillly.com/tools/code-to-image/api/generate \
  -H 'Content-Type: application/json' \
  -d '{
  "code": "export function greet(name: string): string {\n  return `Hello, ${name}!`;\n}",
  "language": "typescript",
  "theme": "tokyo-night",
  "title": "greet.ts"
}'
Response
{
  "ok": true,
  "data": {
    "id": "5e2c9d1aa03b4f67",
    "url": "https://…r2.cloudflarestorage.com/tools/code-to-image/5e2c9d1aa03b4f67.png?…",
    "expiresAt": "2026-04-05T22:30:00Z",
    "cached": false,
    "width": 900,
    "height": 240,
    "format": "png"
  }
}

Python with custom background

curl -X POST https://quillly.com/tools/code-to-image/api/generate \
  -H 'Content-Type: application/json' \
  -d '{
  "code": "def fib(n):\n    return n if n < 2 else fib(n-1) + fib(n-2)",
  "language": "python",
  "theme": "dracula",
  "background": "#0f172a",
  "title": "fib.py"
}'
Response
{
  "ok": true,
  "data": {
    "id": "…",
    "url": "…",
    "cached": false
  }
}