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.
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.
| Field | Value |
|---|---|
Method | POST |
URI | https://api.rendex.dev/v1/screenshot/json |
| Headers | Add two headers: Authorization with value Bearer rdx_… (your key), and Content-Type with value application/json. |
| Body | Your 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:
{
"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:
| Field | Value |
|---|---|
| Folder Path | Pick your target folder, e.g. /Rendex |
| File Name | render.png |
| File Content | Click the field → Expression tab → paste the expression below. |
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
- Trigger: When an item is created in a SharePoint list (or a Microsoft Forms response).
- HTTP action: POST to
/v1/screenshot/jsonwith your invoice HTML (map item fields into the markup) and"format": "pdf". - 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
- Trigger: a new Dataverse or SharePoint record.
- HTTP action: POST to
/v1/screenshot/jsonwith a branded HTML card,"format": "png", and 1200×630 dimensions. - Create file: save the decoded PNG to SharePoint and store its URL on the record.
Recipe 3 — Weekly competitor screenshots
- Trigger: Recurrence, every Monday.
- Apply to each: loop over a list of competitor URLs.
- HTTP action: POST each URL to
/v1/screenshot/jsonwith"fullPage": true. - 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:
{
"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.
| Limit | Free | Basic | Starter | Pro | Enterprise |
|---|---|---|---|---|---|
| Rate limit (req/min) | 3 | 20 | 60 | 300 | 1000 |
| Batch size | — | 10 | 25 | 100 | 500 |
| Concurrent async jobs | 3 | 15 | 50 | 200 | 1000 |
| Geo-targeting | — | — | — | Yes | Yes |
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/jsonand decode withbase64ToBinary()— calling the raw/v1/screenshotendpoint 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:
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:
// 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
- Rendex for Power Automate — what you can build with the HTTP action across your flows.
- Create a free Rendex API key — 100 renders/month, no credit card.
- Quickstart — see the raw REST and SDK equivalents of every request above.
- API Reference — every parameter you can pass in the HTTP action body.
- Webhooks — receive a callback into a second flow when an async job finishes.