---
title: "Free OG-image generator"
method: POST
path: "/api/tools/image"
tags: ["Free tools"]
---

# Free OG-image generator

`POST /api/tools/image`

## Request

- Base URL: `https://snaplab.dev`
- URL: `https://snaplab.dev/api/tools/image`
- Auth: none required

Public and key-less: 20 renders per day per IP, viewports capped at 1600px, and always answered with a hosted URL.

## Request body

- object
  - `html` string, required
  - `css` string
  - `googleFonts` string
  - `width` integer
  - `height` integer
  - `format` 'png' | 'jpeg' | 'webp'

## Response `200`

A hosted render plus the caller's remaining daily budget.

- ToolResult: Answer for `responseType: "json"` — the render is stored and served from a public, immutable URL.
  - `url` string, uri, required
  - `id` string, required
  - `format` string, required
  - `width` integer
  - `height` integer
  - `bytes` integer, required
  - `cacheHit` boolean
  - `durationMs` integer
  - `kind` 'screenshot' | 'pdf' | 'image'
  - `remainingToday` integer
  - `dailyLimit` integer

## Other responses

- `400`: Invalid options, or a blocked target.
- `429`: The free daily limit for this IP is spent (`tool_limit_reached`).
- `503`: Renderer busy.

---

[API](https://skmtc.dev/snaplab/apis/snaplab-api.md) · [All operations](https://skmtc.dev/snaplab/apis/snaplab-api/llms.txt) · [OpenAPI document](https://skmtc.dev/snaplab/apis/snaplab-api/revisions/4dbfbd8cd118?raw)
