---
title: "Per-content OG image"
method: GET
path: "/preview/{ns}/{id}.png"
tags: ["preview"]
---

# Per-content OG image

`GET /preview/{ns}/{id}.png`

Returns 1200×630 PNG, cached, with ETag/If-None-Match support; falls back to /og-image.png?v=2 on any failure

## Path parameters

- `ns` string, required
- `id` string, required

## Headers

- `If-None-Match` string

## Response `200`

PNG image bytes

## Other responses

- `302` — Fallback to static og-image.png (flag off, no source, generation error, oversized)
- `304` — Not modified (If-None-Match matched current ETag)
- `429` — Per-IP rate limit exceeded

---

[API](https://skmtc.net/brewpage/apis/brewpage-api.md) · [All operations](https://skmtc.net/brewpage/apis/brewpage-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/brewpage/brewpage-api/revisions/6e0ac03e39e5/schema)
