Generate Signed URL
Learn how you can make a POST request to generate a signed URL
Updated
/v1/signed-url/createcurl -X POST "https://api.orshot.com/v1/signed-url/create" \
-H "Authorization: Bearer <ORSHOT_API_KEY>"const res = await fetch("https://api.orshot.com/v1/signed-url/create", {
method: "POST",
headers: {
Authorization: "Bearer <ORSHOT_API_KEY>",
},
});
const data = await res.json();import requests
response = requests.post(
"https://api.orshot.com/v1/signed-url/create",
headers={"Authorization": "Bearer <ORSHOT_API_KEY>"},
)
data = response.json()$ch = curl_init("https://api.orshot.com/v1/signed-url/create");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <ORSHOT_API_KEY>",
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);require "net/http"
require "json"
uri = URI("https://api.orshot.com/v1/signed-url/create")
req = Net::HTTP::Post.new(uri)
req["Authorization"] = "Bearer <ORSHOT_API_KEY>"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)You can generate a signed URL for a utility template and render it publicly without leaking your API key.
Signed URLs work only with utility templates, such as Website Screenshot,
with renderType set to images. For your own Studio templates, use
Dynamic URLs.
https://api.orshot.com/v1/signed-url/createPOST Request#
await fetch(`https://api.orshot.com/v1/signed-url/create`, {
method: "POST",
headers: {
Authorization: `Bearer <ORSHOT_API_KEY>`,
"Content-Type": "application/json",
},
body: JSON.stringify({
templateId,
expiresAt,
renderType,
modifications,
}),
});{
data: {
url: "https://api.orshot.com/v1/generate/images?expiresAt=never&fullCapture=false&height=1000&id=20&templateId=website-screenshot...."
}
}All four params are required. A missing templateId, modifications or expiresAt returns 400.
expiresAt: UNIX timestamp in seconds, e.g.1744550160, of when you want the signed URL to expire. Pass the string"never"if you do not want the signed URL to expire.templateId: the utility template's ID, e.g."website-screenshot".modificationsrenderType: use"images".
Create signed URLs with an API key. Opening the URL returns the image file. An expired URL returns 401, and a URL whose params were changed fails the signature check.
Rate Limits#
This endpoint is not individually rate limited. However, when a signed URL is accessed and triggers a render, that render counts against your plan's render rate limit.
SDKs#
If you prefer, you can use our SDKs which give you abstracted functions to quickly generate signed URLs
Ready to automate?
Start rendering images, PDFs and videos from your templates in under 2 minutes. Free plan, no credit card.
Get your API key- Image, PDF and video generation via API
- Visual editor with AI and smart layouts
- Zapier, Make, MCP and 40+ integrations
- White-label embed for your own app
- 100 free credits a month, no credit card required