Skip to content

Capture dashboards and pages behind a login

Send the headers, token or cookies the page expects and capture it exactly as a signed-in person sees it. Wait for the chart to render, hide what should not be shared, and get the image back in one request.

Create a free accountRead the API docs

  • Headers, cookies and tokens
  • Wait for a selector
  • Hide any element
  • Counted per screenshot
POST /render/v1/screenshot
Authorization: Bearer if_live_...

{
  "url": "https://app.example.com/reports",
  "headers": {
    "Authorization": "Bearer eyJhbGci..."
  },
  "cookies": [
    { "name": "session", "value": "..." }
  ],
  "wait_for_selector": "#revenue-chart",
  "hide_selectors": ["#support-widget"],
  "full_page": true
}

One request

The page you actually need is behind a session

Public pages are the easy half. The screenshots that matter are usually the dashboard, the admin view or the report, and those need a session, a token and a wait for the chart to finish drawing. That is where teams end up writing a Puppeteer script and then maintaining a browser, a login flow and a credential rotation.

Ironfang Render takes the headers, cookies and token as request parameters, waits for the selector you name, and hides the elements you would rather not share. You keep the credential handling in your own code, where it belongs, and send the narrowest token that will load the page.

POST /render/v1/pdf
Authorization: Bearer if_live_...

{
  "url": "https://app.example.com/invoice/1042",
  "headers": { "Authorization": "Bearer eyJhbGci..." },
  "paper_format": "a4",
  "print_background": true
}

Capabilities

Everything a session-protected page needs

The authentication, waiting and hiding that turn a login-protected view into a reliable image.

Use cases

Where the useful screenshot needs a login

Anywhere the interesting page is one your customers or your team have to sign in to see.

Dashboard digests

Capture the authenticated view on a schedule and send it into an email or a channel where people already are.

Customer-facing reports

Render a customer their own view of a dashboard without giving them a seat in the product.

Support and incident records

Attach the state of an authenticated page to a ticket, with the personal details hidden by selector.

Staging and preview checks

Capture a protected environment from CI using the header it expects, then attach the image to the pull request.

Internal tool archives

Keep a record of what an admin view showed on a date, at a viewport you chose.

Onboarding and documentation

Regenerate product screenshots from a seeded account whenever the interface changes.

Capturing public pages as well?

Authentication is a set of parameters on the same endpoint. The screenshot API page covers the rest of it: formats, viewports, element and region capture, and full-page output.

Pricing

Counted per screenshot or PDF, like any other

Authentication does not change what a render counts: each capture is one screenshot and each document one PDF, and failed renders and cache hits count nothing. Every account has a free allowance each month, with no card required. Past it, Pay as you go charges the rates below, within the monthly usage limit you set. Prices exclude VAT.

Screenshots

Each screenshot returned or stored.

500 screenshots free each month

Paid units after the free allowanceRate per 1,000
First 10,000£1.50
Next 90,000£0.90
Next 900,000£0.65
Above 1,000,000£0.45

PDFs

Each PDF returned or stored, every page within the page limit included.

100 PDFs free each month

Paid units after the free allowanceRate per 1,000
First 10,000£1.50
Next 90,000£0.70
Next 900,000£0.50
Above 1,000,000£0.40

See Ironfang Render pricingCompare with other providers

Questions

Before you integrate

The details that decide whether this fits, without reading the whole reference first.

How do I authenticate the capture?
Send whatever the page expects: an Authorization header, custom headers, cookies, or a specific user agent. The browser loads the page with them, so a session-protected dashboard renders the way it does for a logged-in person.
My dashboard renders charts after load. How do I capture those?
Wait for a selector that only exists once the chart is drawn. That is more reliable than waiting for the network, because a dashboard often settles its requests before it finishes painting.
Can I capture a page on a private network or localhost?
No. Render targets are guarded against private, loopback and link-local addresses, so the page needs to be reachable on the public internet. A staging environment behind basic auth or a header works; one behind a VPN does not.
Are my credentials stored?
Headers and cookies are used to make the request and are not part of the cache key you can read back. Treat them as you would any secret in an API call: send the narrowest token that will load the page.
Can I hide parts of the page before capturing?
Yes. Pass a list of selectors to hide, and turn on ad blocking and cookie-banner hiding. Useful for removing a support widget, a personal name or a notification badge from a shared screenshot.
What if the page is slow?
Set a timeout per request, add a fixed delay of up to ten seconds, or wait for a specific selector. A failed render counts nothing, so a render that never settles is not charged.
Does this work for PDFs too?
Yes. The same headers, Authorization header and cookies apply to a PDF request, so an authenticated statement prints exactly as it captures.

Less to operate. More to ship.

Capture your first authenticated page

Create an account, take a key and send the header your application already uses.

500 free screenshots each month, no card required, and no charge for failed renders.