Get API key

Power Automate Integration

Render HTML to a pixel-perfect image inside any Microsoft Power Automate flow — no hosted page, no custom connector. Rendex exposes a clean REST endpoint, so Power Automate's built-in HTTP action is all you need to turn raw markup or a live URL into a PNG, JPEG, WebP, or PDF and save it to OneDrive, SharePoint, or an email.

Before you start: the built-in HTTP action is a premium connector. The flow owner needs a Power Automate Premium(per-user) or per-flow plan. The free Office 365 “Send an HTTP request” actions only call Microsoft Graph / SharePoint URLs, so they can't reach api.rendex.dev — the premium HTTP action is required.

What You Can Automate

  • Render HTML to an image — POST an invoice, OG card, certificate, or email template and get a PNG back. No hosting step in between.
  • Screenshot any URL on a schedule and save the image to OneDrive, SharePoint, or Dataverse.
  • Generate PDFs from HTML or a URL for invoices, reports, and compliance snapshots.
  • Batch and async jobs for heavy pages or large URL lists, with an optional webhook callback into a second flow.

Quick Setup

Calling Rendex from Power Automate takes under five minutes. If you already have a Rendex key, jump to step 2.

1. Create a Rendex API key

Sign up for a free Rendex account at rendex.dev/login. After logging in, open your dashboard and click Create API Key. The free plan includes 100 renders per month. Copy the key — it looks like rdx_ followed by 22 characters.

2. Add an HTTP action

In your flow, add the built-in HTTPaction (the one named exactly “HTTP”, with the blue globe icon) after any trigger. Don't pick “HTTP with Microsoft Entra ID” — that one is for Azure AD-protected Microsoft APIs and forces an app registration. Rendex uses a simple Bearer key, so the plain HTTP action is correct.

3. Configure the request

Fill the HTTP action fields exactly as below.

FieldValue
MethodPOST
URIhttps://api.rendex.dev/v1/screenshot/json
HeadersAdd two headers: Authorization with value Bearer rdx_… (your key), and Content-Type with value application/json.
BodyYour raw JSON payload — see the HTML example below.

Use the /v1/screenshot/json endpoint (not the raw /v1/screenshot): Power Automate's HTTP action stores a response as text and mangles raw binary, so the JSON envelope with a base64 image is the reliable path. Send raw HTML in the html field to render it directly — no hosted page needed:

Body
{
  "html": "<div style=\"font-family: system-ui; padding: 48px\"><h1 style=\"color: #e2571a\">Invoice #1042</h1><p>Billed to: Acme Co.</p></div>",
  "format": "png",
  "width": 1200,
  "height": 630
}

To screenshot a live page instead, replace html with "url": "https://example.com". The full parameter list — full-page scroll, dark mode, wait strategy, PDF page options, geo-targeting — is in the API Reference and works as-is inside the JSON body.

Markdown & templates: swap html for markdown to render Markdown with no CSS, and add a data object to fill {{placeholders}} via Mustache before rendering — ideal for generating a per-record invoice or report from one template. See data templating.

4. Save the returned image

The /v1/screenshot/json response is { "data": { "image": "<base64>", "contentType": "image/png" } }. Add a Create file action (OneDrive for Business or SharePoint), then set the fields:

FieldValue
Folder PathPick your target folder, e.g. /Rendex
File Namerender.png
File ContentClick the field → Expression tab → paste the expression below.
File Content (Expression)
base64ToBinary(body('HTTP')?['data']?['image'])

That expression reads the base64 data.imageout of the HTTP action's response and converts it to real bytes so the saved .png opens as an image. If you renamed the HTTP action, replace 'HTTP'with that action's name. For a PDF, set "format": "pdf" in the body and name the file render.pdf.

Flow Recipes

Recipe 1 — Render an invoice PDF on each new SharePoint item

  1. Trigger: When an item is created in a SharePoint list (or a Microsoft Forms response).
  2. HTTP action: POST to /v1/screenshot/json with your invoice HTML (map item fields into the markup) and "format": "pdf".
  3. Create file: save the decoded image (the step-4 expression) to a document library, then email it with Outlook.

Recipe 2 — Generate a social OG card per new record

  1. Trigger: a new Dataverse or SharePoint record.
  2. HTTP action: POST to /v1/screenshot/json with a branded HTML card, "format": "png", and 1200×630 dimensions.
  3. Create file: save the decoded PNG to SharePoint and store its URL on the record.

Recipe 3 — Weekly competitor screenshots

  1. Trigger: Recurrence, every Monday.
  2. Apply to each: loop over a list of competitor URLs.
  3. HTTP action: POST each URL to /v1/screenshot/json with "fullPage": true.
  4. Create file + notify: save each image and post a Teams message.

Website monitoring (Watch)

Rendex Watch monitors a page for changes and fires a webhook when it changes. Power Automate has no native Watch action, but you create and manage a watch with the same built-in HTTP action you use for screenshots — POST to https://api.rendex.dev/v1/watches with the same Authorization: Bearer rdx_… and Content-Type: application/json headers:

POST /v1/watches
{
  "url": "https://status.northwind.io",
  "intervalMinutes": 180,
  "diffMode": "both",
  "webhookUrl": "https://prod-00.westus.logic.azure.com/workflows/…",
  "notifyEmail": "you@youraccount.com"
}

Only url is required. intervalMinutes sets how often to check (plan floors: 1440 / daily on Free, 180 on Starter, 30 on Pro), diffMode is both (default — visual + text, alerting on either), visual, or text, threshold is 0–1 (default 0.01; the visual sensitivity), and an optional webhookUrl (Starter+) or notifyEmail (your account email, any plan) sets where alerts go. Each check uses 1 credit from your shared pool.

To receive change events, build a second flow with the When a HTTP request is receivedtrigger, copy its generated URL, and set it as the watch's webhookUrl. The flow fires on the HMAC-signed watch.changed (plus watch.recovered and watch.error) payload — which carries a one-line summary of what changed, the textDiff lines, diffScore, and beforeUrl/afterUrl/diffOverlayUrl/cropUrl images — and routes it to Teams, email, or anywhere else. See the webhooks reference for the signature details.

Plan Limits

Every Rendex API limit applies to requests made from Power Automate.

LimitFreeBasicStarterProEnterprise
Rate limit (req/min)320603001000
Batch size1025100500
Concurrent async jobs315502001000
Geo-targetingYesYes

See the pricing page for full plan details. Power Automate runs are billed separately by Microsoft, and the HTTP action requires a premium license.

Tips & Best Practices

  • Use the /json endpoint.Power Automate can't cleanly hold raw binary, so call /v1/screenshot/json and decode with base64ToBinary() — calling the raw /v1/screenshot endpoint produces a corrupt file.
  • Set File Content via the Expression editor. Typing base64ToBinary(...)into the normal field as plain text won't evaluate — use the Expression tab.
  • Escape HTML for JSON. Inner double quotes in your markup must be escaped, or build the body in a prior Compose action so the JSON stays valid.
  • Throttle high-volume flows.Add a delay or concurrency limit on Apply to each to stay under your plan's per-minute rate limit, or upgrade for higher throughput.

Troubleshooting

I get a 401 Unauthorized

Confirm the Authorization header value is exactly Bearer followed by your rdx_ key (22 characters after the prefix). A common slip is omitting the Bearer prefix or leaving a trailing space.

The saved file is corrupt or won't open

You likely called /v1/screenshot (raw binary) instead of /v1/screenshot/json, or set File Content to the raw response instead of the base64ToBinary(...)expression. Use the JSON endpoint and the expression in step 4.

I get a 400 about sending exactly one input

Your JSON body must include exactly one of html, url, or markdown — never two at once, and never zero. A common slip is leaving a leftover field (say, both url and html) in the request body, which returns:

400 response
Send exactly one input source — you provided 'url' and 'html'. Pick one of 'url', 'html', or 'markdown'.

Send just one source. The two common shapes are:

Pick one
// Render your own HTML:
{ "html": "<h1>Hello</h1>", "format": "png" }

// Screenshot a live page:
{ "url": "https://example.com" }

The HTTP action isn't available

The built-in HTTP action is a premium connector. Confirm the flow owner has a Power Automate Premium or per-flow license — the free Office 365 HTTP actions can only call Microsoft endpoints, not api.rendex.dev.

Support

For Rendex API questions, email support@rendex.dev or check the error reference. For Power Automate-specific help, see Microsoft's own documentation for the HTTP action and base64ToBinary().

Next Steps

Was this page helpful?