---
title: Documentation
description: RenderOG API reference. Generate Open Graph images and screenshots from a single signed request. Sub-100ms edge renders, true pay-as-you-go pricing.
slug: index
---

# RenderOG Documentation

RenderOG is an edge-rendered Open Graph image and screenshot API. Generate production-grade OG images in under 100ms with true pay-as-you-go pricing — no credits, no cold starts, and we never bill failed renders or cache hits.

## Two Capabilities

**OG Images (Live)**
Generate Open Graph images on-the-fly from signed URLs. Choose from four built-in templates (basic, gradient, blog, product) or pass custom HTML/CSS. Rendered at Cloudflare's edge in under 100ms, cached at the edge for 1 year.

**Screenshots (Coming Soon)**
Capture website screenshots with Cloudflare Browser Rendering. Full-page or viewport crops, multiple formats (PNG, WebP, JPEG), with cookie dismissal and custom delays. Currently returns 501 — rolling out Phase 5.

## How It Works

All requests are **signed with HMAC-SHA256** to prevent tampering. You provide a request (`template`, `title`, etc.) and a signature computed from your signing secret. The API verifies the signature, renders the image, and returns it as cached bytes.

**For API access**, use bearer-token authentication (`Authorization: Bearer sk_live_...`) to call `/v1/render` and `/v1/usage`.

Public signed URLs (`GET /og`) are ideal for dynamic sharing links and meta tags. API keys (`/v1/*`) are for backend integrations and custom HTML templates.

## Start Here

- **[Quickstart](./quickstart.md)** — Get an API key, sign your first URL, and render an OG image in 5 minutes.
- **[GET /og Reference](./og.md)** — Full parameter documentation, all four templates, caching behavior, and Satori/CSS constraints.
- **[GET /screenshot Reference](./screenshot.md)** — Planned screenshot API contract (coming soon; currently 501).
- **[MCP Server](./mcp.md)** — Connect Claude Desktop, Claude Code, or Cursor via the Model Context Protocol.
- **[Error Codes](./errors.md)** — Every HTTP status and error code, with billing status for each.
- **[Pricing & Billing](./pricing-api.md)** — Free tier limits, PAYG model, usage endpoints, and quota behavior.
- **[FAQ](./faq.md)** — Eight common questions answered in 60 words or less.

## Key Promises

**Sub-100ms OG renders** (cached), **1–4s screenshots** (when live).
**$0.003 per render**, no minimum, billed only on successful renders (status 200) that miss the cache.
**Free tier of 500 renders/month** — never billed, even on PAYG plans.
**Failures never billed** — 4xx and 5xx responses have zero cost.
**Cache hits never billed** — the same render twice costs nothing the second time.

---

## Base URL & Authentication

**Public endpoint:** `https://api.renderog.app`

**API key auth (for `/v1/*`):**
```
Authorization: Bearer sk_live_<40 hex characters>
```

Keys are created in your dashboard. The full key is shown exactly once at creation; store only the hash. Rotate keys at any time with `POST /v1/keys`.

---

## Signing Algorithm (for `GET /og`)

1. Collect all query parameters except `sig`.
2. Sort them alphabetically by key.
3. Build a canonical string: `key1=encodeURIComponent(value1)&key2=encodeURIComponent(value2)...`
4. Compute `sig = HMAC-SHA256(SIGNING_SECRET, canonical)` and encode as hex.

Details and worked examples in [Quickstart](./quickstart.md).

---

## Get Help

- **Email:** support@renderog.app (monitored during business hours)
- **GitHub:** [fgandolfo/renderog](https://github.com/fgandolfo/renderog) (issues, discussions)
- **Status:** [status.renderog.app](https://status.renderog.app)
