propzapi

Props-first спортивные коэффициенты API: живые коэффициенты и ставки на игроков в NBA/NFL/MLB/NHL в виде инструментов MCP.

Документация

From a template to a finished image in one round trip.

Your call gets authed and metered, the render engine turns your template and data into an image with headless Chromium, and you get back a URL with the exact credit cost in a header. A failed render is never charged.

Runtime FastAPI

Renderer Headless Chromium

Output PNG / JPEG / WebP / PDF

Agents MCP + llms.txt

An image API, not a design app with an API bolted on.

No editor to log into, no headless Chrome to run and babysit yourself. Send a template id and your values, get a finished image. Bring your own templates whenever the built-in ones aren't enough.

POST a template id and a small object of values. The engine fills your placeholders, renders the HTML with Chromium, and returns a URL to the image. Same request whether you want a 1200×630 share card or a square quote graphic.

Request
Response
Built-in
Formats

A template is your HTML and CSS with {{variables}}. Create it once over the API, then render it as many times as you want with different data. No proprietary editor.

POST /v1/templatesHTML + CSS{{variables}}

Point Claude, Cursor, Cline or n8n at the hosted MCP server. generate_image renders and hands the agent the actual picture, not a link. OpenAPI 3.1 and llms.txt in the box.

MCPgenerate_imagelist_templates

One credit per image, and only when a render actually succeeds. The exact cost and your balance come back in response headers, so there is nothing to guess. 50 free to start.

1 credit = 1 imagebilled on deliverypacks from $5

Turn a template, your own HTML, or any URL into an image or PDF.

The same render engine and the same API key do four jobs. Use one, or use all four.

▦

Template → image

A built-in or your own HTML template, plus your data, rendered to a PNG, JPEG or WebP.

POST /v1/images

◈

HTML & CSS → image

Send your own HTML and CSS, get back a hosted image. It renders in full Chromium, so the layout you wrote is the layout you get.

/v1/templates → /v1/images

▤

HTML → PDF

Same template, one line different. Set format to pdf and get a one-page PDF at the template's size.

format: pdf

◱

URL → screenshot

Point it at any public web page and capture it as an image, the viewport or the full page.

POST /v1/screenshot

The things people hate about render APIs, fixed by default.

We read the threads where developers vent about screenshot and image APIs. Here's what usually goes wrong, and what we do instead.

The usual wayWith propzapi

Captures come back blank

Pages that fade content in as you scroll, or lazy-load their images, screenshot half-empty.

Full-page shots that fill in

It scrolls the whole page first so those sections load, then waits on fonts and the network before the shot.

Surprise overage bills

Go one image over and some APIs quietly charge you. A stuck retry loop can cost real money.

Never charged by surprise

A failed render costs nothing. Out of credits, you get an error, not a charge. Packs never expire.

A $49 floor to start

Most template APIs want a monthly plan before you've rendered a single real image.

$5, pay as you go

Fifty free with no card, then packs from $5 that don't expire. Subscribe only when the volume earns it.

Learn their editor first

Your design lives in a proprietary canvas you log into and rebuild every template in.

Templates are just your HTML

Your own HTML and CSS with {{variables}}. Write it once, render it with new data forever.

No path for an agent

The API is built for humans and SDKs. Wiring an AI agent to it is your problem.

An agent calls one tool

Point Claude, Cursor or n8n at the MCP server and it hands back the actual image, not a link.

One tool per format

An image service here, a PDF one there, a separate screenshot API. Three bills, three integrations.

One engine, one key

Template to image, HTML to image, HTML to PDF, or any URL to a screenshot. Same call, same meter.

Common questions about the image API.

Straight answers about templates, formats, pricing and agents, for developers and the LLMs that read this page on their behalf.

What does propzapi do?▾

You give it a template and some data; it renders a finished image with headless Chromium. A social card, an Open Graph image, a certificate, whatever your HTML describes. Your app calls one endpoint. Your AI agent calls one MCP tool and gets the image back.

How is it different from BannerBear or Placid?▾

It was built for agents first, so a Claude or Cursor agent renders an image as an MCP tool instead of you wiring up an SDK. Your templates are plain HTML and CSS you control, not a no-code editor to learn. And you can pay as you go from $5, with no $49 floor to get started.

Do I have to use your templates?▾

No. Fourteen are built in to get you moving, but the point is your own. Make a template with your HTML and {{variables}}, then render it as often as you like with different data.

Is there a free tier?▾

A 50-image trial, no card. One POST to /v1/register gives you a key. When it runs out, buy a pay-as-you-go pack from $5 (those never expire) or subscribe from $29 a month.

Can AI agents use it?▾

That's the main idea. There's a hosted MCP server, an llms.txt and an OpenAPI spec, so an agent in Claude, Cursor, n8n or LangChain can generate an image in one call and get the picture back inline, not just a link.

My screenshots come back blank on pages that animate in as I scroll. Does that happen here?▾

No. On a full-page capture it scrolls the whole page first, so anything that fades in on scroll or lazy-loads its images gets a chance to load, and it waits for fonts and the network to settle before the shot. You get the finished page, not a half-empty one.

If I go over my quota, will I get charged overage automatically?▾

No. A render that fails costs zero credits, and when you run out the call returns an error instead of a silent charge. Pay-as-you-go packs never expire, so nothing keeps metering in the background and no surprise invoice shows up.

Can it screenshot sites that try to block bots?▾

There's a stealth option that sends a real browser fingerprint: a proper user agent, no automation flags, real language headers. Pages that just check for headless Chrome will still capture. It won't beat a full Cloudflare Turnstile challenge, and we'd rather tell you that than pretend otherwise.

What if propzapi goes away one day? Am I locked in?▾

Your templates are your own HTML and CSS, and the API is plain REST with an OpenAPI spec. There's no proprietary template format to escape, so the same markup renders in any Chromium-based tool if you ever need to move off.

Render an image or PDF, screenshot a URL, or manage templates.

One key, one JSON shape, whether you call it from code or an agent. Here are the ones you'll reach for most.

POST /v1/images

Render an image or PDF from a template and your modifications. Returns a URL, plus the cost in a header.

POST /v1/screenshot

Screenshot any public web page to an image, viewport or full page. Same key and meter.

POST /v1/images/batch

Render up to 25 images in one call. One credit per image that actually renders.

POST /v1/templates

Create a reusable template from your HTML and {{variables}}. GET / PATCH / DELETE too.

POST /v1/embed-url

Sign a GET render URL to drop straight in og:image. Cached and free on every refetch.

POST /v1/templates/preview

Render a template or ad-hoc HTML without spending a credit. The editor's live preview.

POST /mcp

MCP server for agents. Tools: generate_image, screenshot_url, list_templates.

Full API reference →

One call. Any language.

Works with plain curl, fetch or requests, no SDK required. Swap pk_live_… for your key and every example renders a real image.

curl -X POST "https://api.propzapi.com/v1/images" \
  -H "X-API-Key: pk_live_…" \
  -H "Content-Type: application/json" \
  -d '{"template":"og-article","modifications":{"title":"Hello from propzapi"}}'
const r = await fetch("https://api.propzapi.com/v1/images", {
  method: "POST",
  headers: { "X-API-Key": "pk_live_…", "Content-Type": "application/json" },
  body: JSON.stringify({
    template: "og-article",
    modifications: { title: "Hello from propzapi" },
  }),
});
console.log((await r.json()).url);
import requests
r = requests.post(
    "https://api.propzapi.com/v1/images",
    headers={"X-API-Key": "pk_live_…"},
    json={"template": "og-article", "modifications": {"title": "Hello from propzapi"}},
)
print(r.json()["url"])

Free while you build. Pay when it ships.

Start with 50 free, no card. One credit is one image, and a failed render is never charged. See full pricing →

50 free images to try

No card. Then pay as you go from $5, or subscribe. Your own templates on every plan.

Start free →

Free trial

$0

  • 50 images, one-time
  • No card
  • Try it, then pay

Packs

$5 +

  • $5 → 150 images
  • $15 → 500 images
  • Never expire, no plan

★ Popular

Growth

$79 /mo

  • 3,500 images / mo
  • Your own templates
  • MCP + email support

Starter

$29 /mo

  • 1,000 images / mo
  • Small production apps
  • MCP + email support

Pro

$199 /mo

Your first imagetakes sixty seconds.

Sign up with email, copy your key, POST a template. The first 50 images are on us. No card, no contract.

# 60-second quickstart
curl -X POST https://api.propzapi.com/v1/register
# → { "api_key": "pk_live_…", "credits": 50 }

curl -X POST https://api.propzapi.com/v1/images \
  -H "X-API-Key: pk_live_…" -H "Content-Type: application/json" \
  -d '{"template":"og-article","modifications":{"title":"Hi"}}'