og.wave.online renders the 1200×630 social card every WAVE spoke's og:image points at — 3 card kinds (site, page, engine), no auth required, edge-cached 24 hours.
$ curl -sI "https://og.wave.online/card.png?host=og.wave.online&product=OG&tagline=Every+WAVE+card,+one+worker"
HTTP/2 200
content-type: image/png
cache-control: public, max-age=86400, s-maxage=86400
x-wave-og: 1
GET /card.png?host=<h>&product=<p>&accent=<hex>&tagline=<t> GET /card.png?host=<h>&title=<t>&desc=<d>&kind=page|engine&path=/<p>
| Param | Default | Validation |
|---|---|---|
| host | wave.online | ^[a-z0-9.-]+\.wave\.online$ |
| product | WAVE | max 40 chars, HTML-escaped |
| tagline | Media infrastructure for the agentic internet. | max 120 chars, HTML-escaped |
| accent | 21BCE7 | 6-digit hex (invalid → default) |
| title | — | max 70 chars, HTML-escaped; present ⇒ kind defaults to page |
| desc | tagline | max 140 chars, HTML-escaped |
| kind | site (page when title is set) | site · page · engine |
| path | — | ^/[A-Za-z0-9/_.~-]{0,79}$, shown in the footer after the host |
site — the WAVE gradient wordmark and a tagline (the default and every spoke's card).
page — a per-page card: eyebrow, title, description, footer with the page path.
engine — a page card with the ENGINE chip. HEAD returns the headers without a body.
content-type: image/pngcache-control: public, max-age=86400, s-maxage=86400
/llms.txt · /.well-known/agent-card.json · /skill.md · /health
a WAVE product · og.wave.online