One GET request returns a PNG. No SDK, no build step.
GET https://zooky.net/api/og
Returns image/png (1200×630 by default). Put the URL straight into your meta tags:
<meta property="og:image" content="https://zooky.net/api/og?title=Hello&theme=aurora"> <meta name="twitter:card" content="summary_large_image">
| Param | Type | Description |
|---|---|---|
title | string | Main headline. Font auto-sizes to fit. Max 120 chars. |
subtitle | string | Supporting line under the title. Max 180 chars. |
badge | string | Small uppercase label at the top (e.g. your brand or category). |
footer | string | Small label bottom-left with an accent dot (e.g. your domain). |
theme | enum | aurora (default), dark, light, midnight, sunset, mint, ocean. |
accent | hex | Override the accent color, e.g. accent=ff5c00. |
size | enum | og 1200×630 (default), square 1080×1080, wide 1600×840. |
w / h | int | Custom dimensions (320–2000). Ignored if size is set. |
watermark | bool | Pro keys render clean by default; pass watermark=1 to add it back. |
Zooky works with no key at all — the free tier is rate-limited and adds a small watermark. Add a Pro key for clean, higher-volume rendering. Any one of:
curl "https://zooky.net/api/og?title=Hi" -H "Authorization: Bearer zk_live_..." curl "https://zooky.net/api/og?title=Hi" -H "x-api-key: zk_live_..." curl "https://zooky.net/api/og?title=Hi&key=zk_live_..."
| Tier | Limit | Watermark |
|---|---|---|
| Free (no key) | 50 images / hour / IP | Yes |
| Pro | 10,000 images / month | No |
Rendered images are cached and served with long Cache-Control, so repeated loads don't count against you and stay fast at the edge.
200 — PNG image. Headers: X-Zooky-Plan, X-Zooky-Cache: hit|miss.401 — invalid/disabled key.429 — rate limited (free) or monthly quota exceeded (pro). See Retry-After.GET /health | Service health JSON. |
GET /api/stats | Public render counters + available themes. |
See pricing or email [email protected].