Skip to main content

Confirm

Are you sure?

Changelog · September 22, 2026

Every screenshot has a link that needs no API key

Put a screenshot on a page without proxying base64 through your own server.

By · Last updated: September 2026

TL;DR

Every screenshot result now carries a signed URL to the image: X-Result-Url over HTTP, result_url in the webhook body, and the same key in the MCP metadata. The link needs no API key and works until the result expires 30 days after it was taken, so it can go straight into an <img> tag.

Free plan, no credit card. 1,000 credits a month.

What a request returns doesn't change: /screenshot still answers with the image as base64 and the webhook still carries it in result. What's added is the link, on all three transports, so none of them disagree about what a request answers.

The link expires exactly when the result does — 30 days after it was taken — so it never outlives its file or dies before it. It is a bearer link: anyone holding it can load that screenshot until then. Treat it like the image itself.

Request

Example

Read the link from the headers
curl -sD - -o /dev/null -X POST https://urlpipe.dev/screenshot \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com", "sync": true}' | grep -i x-result-url

FAQ

Frequently asked questions

How long does the screenshot link work?
Until the result expires, 30 days after the screenshot was taken.
Does the link need my API key?
No. It is signed, which is what lets you use it in an <img> tag. Anyone holding it can load the image until it expires.
Where do I find the link in an async request?
In the webhook body as result_url, beside the base64 result, and in the MCP metadata block.

Try it on the free plan.

Free plan, no card. Confirm your email and your API key is live — you'll be making real requests in minutes.