curl --request POST \
--url https://api.scrinly.com/render/snapshot \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"timeout": 30,
"waitUntil": "networkidle2",
"width": 1970,
"height": 1130,
"device": "<string>",
"theme": "light",
"blockCookieBanners": true,
"blockAds": true,
"blockChatWidgets": true,
"blockPopups": true,
"blockAccessibilityWidgets": true,
"hideSelectors": [
"<string>"
],
"clickSelectors": [
"<string>"
],
"scrollToElement": "<string>",
"headers": {},
"cookies": [
{
"name": "<string>",
"value": "<string>",
"domain": "<string>",
"path": "<string>",
"expires": 123,
"httpOnly": true,
"secure": true
}
],
"priority": "normal",
"cache": false,
"webhookUrl": "<string>",
"webhookSecret": "<string>",
"store": false,
"storage_path": "<string>",
"storage_bucket": "<string>",
"storage_endpoint": "<string>",
"storage_region": "auto",
"storage_access_key_id": "<string>",
"storage_secret_access_key": "<string>",
"storage_public_domain": "<string>",
"storage_return_location": true,
"markdown": false,
"html": false,
"links": false,
"images": false,
"videos": false,
"fonts": false,
"colors": false,
"structure": false,
"design": false,
"blueprint": false,
"viewports": [
"desktop",
"mobile"
],
"screenshots": true,
"interpret": false,
"provider": "deepseek",
"refresh": false,
"async": false
}
'import requests
url = "https://api.scrinly.com/render/snapshot"
payload = {
"url": "<string>",
"timeout": 30,
"waitUntil": "networkidle2",
"width": 1970,
"height": 1130,
"device": "<string>",
"theme": "light",
"blockCookieBanners": True,
"blockAds": True,
"blockChatWidgets": True,
"blockPopups": True,
"blockAccessibilityWidgets": True,
"hideSelectors": ["<string>"],
"clickSelectors": ["<string>"],
"scrollToElement": "<string>",
"headers": {},
"cookies": [
{
"name": "<string>",
"value": "<string>",
"domain": "<string>",
"path": "<string>",
"expires": 123,
"httpOnly": True,
"secure": True
}
],
"priority": "normal",
"cache": False,
"webhookUrl": "<string>",
"webhookSecret": "<string>",
"store": False,
"storage_path": "<string>",
"storage_bucket": "<string>",
"storage_endpoint": "<string>",
"storage_region": "auto",
"storage_access_key_id": "<string>",
"storage_secret_access_key": "<string>",
"storage_public_domain": "<string>",
"storage_return_location": True,
"markdown": False,
"html": False,
"links": False,
"images": False,
"videos": False,
"fonts": False,
"colors": False,
"structure": False,
"design": False,
"blueprint": False,
"viewports": ["desktop", "mobile"],
"screenshots": True,
"interpret": False,
"provider": "deepseek",
"refresh": False,
"async": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
url: '<string>',
timeout: 30,
waitUntil: 'networkidle2',
width: 1970,
height: 1130,
device: '<string>',
theme: 'light',
blockCookieBanners: true,
blockAds: true,
blockChatWidgets: true,
blockPopups: true,
blockAccessibilityWidgets: true,
hideSelectors: ['<string>'],
clickSelectors: ['<string>'],
scrollToElement: '<string>',
headers: {},
cookies: [
{
name: '<string>',
value: '<string>',
domain: '<string>',
path: '<string>',
expires: 123,
httpOnly: true,
secure: true
}
],
priority: 'normal',
cache: false,
webhookUrl: '<string>',
webhookSecret: '<string>',
store: false,
storage_path: '<string>',
storage_bucket: '<string>',
storage_endpoint: '<string>',
storage_region: 'auto',
storage_access_key_id: '<string>',
storage_secret_access_key: '<string>',
storage_public_domain: '<string>',
storage_return_location: true,
markdown: false,
html: false,
links: false,
images: false,
videos: false,
fonts: false,
colors: false,
structure: false,
design: false,
blueprint: false,
viewports: ['desktop', 'mobile'],
screenshots: true,
interpret: false,
provider: 'deepseek',
refresh: false,
async: false
})
};
fetch('https://api.scrinly.com/render/snapshot', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.scrinly.com/render/snapshot",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'url' => '<string>',
'timeout' => 30,
'waitUntil' => 'networkidle2',
'width' => 1970,
'height' => 1130,
'device' => '<string>',
'theme' => 'light',
'blockCookieBanners' => true,
'blockAds' => true,
'blockChatWidgets' => true,
'blockPopups' => true,
'blockAccessibilityWidgets' => true,
'hideSelectors' => [
'<string>'
],
'clickSelectors' => [
'<string>'
],
'scrollToElement' => '<string>',
'headers' => [
],
'cookies' => [
[
'name' => '<string>',
'value' => '<string>',
'domain' => '<string>',
'path' => '<string>',
'expires' => 123,
'httpOnly' => true,
'secure' => true
]
],
'priority' => 'normal',
'cache' => false,
'webhookUrl' => '<string>',
'webhookSecret' => '<string>',
'store' => false,
'storage_path' => '<string>',
'storage_bucket' => '<string>',
'storage_endpoint' => '<string>',
'storage_region' => 'auto',
'storage_access_key_id' => '<string>',
'storage_secret_access_key' => '<string>',
'storage_public_domain' => '<string>',
'storage_return_location' => true,
'markdown' => false,
'html' => false,
'links' => false,
'images' => false,
'videos' => false,
'fonts' => false,
'colors' => false,
'structure' => false,
'design' => false,
'blueprint' => false,
'viewports' => [
'desktop',
'mobile'
],
'screenshots' => true,
'interpret' => false,
'provider' => 'deepseek',
'refresh' => false,
'async' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.scrinly.com/render/snapshot"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"timeout\": 30,\n \"waitUntil\": \"networkidle2\",\n \"width\": 1970,\n \"height\": 1130,\n \"device\": \"<string>\",\n \"theme\": \"light\",\n \"blockCookieBanners\": true,\n \"blockAds\": true,\n \"blockChatWidgets\": true,\n \"blockPopups\": true,\n \"blockAccessibilityWidgets\": true,\n \"hideSelectors\": [\n \"<string>\"\n ],\n \"clickSelectors\": [\n \"<string>\"\n ],\n \"scrollToElement\": \"<string>\",\n \"headers\": {},\n \"cookies\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\",\n \"domain\": \"<string>\",\n \"path\": \"<string>\",\n \"expires\": 123,\n \"httpOnly\": true,\n \"secure\": true\n }\n ],\n \"priority\": \"normal\",\n \"cache\": false,\n \"webhookUrl\": \"<string>\",\n \"webhookSecret\": \"<string>\",\n \"store\": false,\n \"storage_path\": \"<string>\",\n \"storage_bucket\": \"<string>\",\n \"storage_endpoint\": \"<string>\",\n \"storage_region\": \"auto\",\n \"storage_access_key_id\": \"<string>\",\n \"storage_secret_access_key\": \"<string>\",\n \"storage_public_domain\": \"<string>\",\n \"storage_return_location\": true,\n \"markdown\": false,\n \"html\": false,\n \"links\": false,\n \"images\": false,\n \"videos\": false,\n \"fonts\": false,\n \"colors\": false,\n \"structure\": false,\n \"design\": false,\n \"blueprint\": false,\n \"viewports\": [\n \"desktop\",\n \"mobile\"\n ],\n \"screenshots\": true,\n \"interpret\": false,\n \"provider\": \"deepseek\",\n \"refresh\": false,\n \"async\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.scrinly.com/render/snapshot")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"timeout\": 30,\n \"waitUntil\": \"networkidle2\",\n \"width\": 1970,\n \"height\": 1130,\n \"device\": \"<string>\",\n \"theme\": \"light\",\n \"blockCookieBanners\": true,\n \"blockAds\": true,\n \"blockChatWidgets\": true,\n \"blockPopups\": true,\n \"blockAccessibilityWidgets\": true,\n \"hideSelectors\": [\n \"<string>\"\n ],\n \"clickSelectors\": [\n \"<string>\"\n ],\n \"scrollToElement\": \"<string>\",\n \"headers\": {},\n \"cookies\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\",\n \"domain\": \"<string>\",\n \"path\": \"<string>\",\n \"expires\": 123,\n \"httpOnly\": true,\n \"secure\": true\n }\n ],\n \"priority\": \"normal\",\n \"cache\": false,\n \"webhookUrl\": \"<string>\",\n \"webhookSecret\": \"<string>\",\n \"store\": false,\n \"storage_path\": \"<string>\",\n \"storage_bucket\": \"<string>\",\n \"storage_endpoint\": \"<string>\",\n \"storage_region\": \"auto\",\n \"storage_access_key_id\": \"<string>\",\n \"storage_secret_access_key\": \"<string>\",\n \"storage_public_domain\": \"<string>\",\n \"storage_return_location\": true,\n \"markdown\": false,\n \"html\": false,\n \"links\": false,\n \"images\": false,\n \"videos\": false,\n \"fonts\": false,\n \"colors\": false,\n \"structure\": false,\n \"design\": false,\n \"blueprint\": false,\n \"viewports\": [\n \"desktop\",\n \"mobile\"\n ],\n \"screenshots\": true,\n \"interpret\": false,\n \"provider\": \"deepseek\",\n \"refresh\": false,\n \"async\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.scrinly.com/render/snapshot")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"<string>\",\n \"timeout\": 30,\n \"waitUntil\": \"networkidle2\",\n \"width\": 1970,\n \"height\": 1130,\n \"device\": \"<string>\",\n \"theme\": \"light\",\n \"blockCookieBanners\": true,\n \"blockAds\": true,\n \"blockChatWidgets\": true,\n \"blockPopups\": true,\n \"blockAccessibilityWidgets\": true,\n \"hideSelectors\": [\n \"<string>\"\n ],\n \"clickSelectors\": [\n \"<string>\"\n ],\n \"scrollToElement\": \"<string>\",\n \"headers\": {},\n \"cookies\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\",\n \"domain\": \"<string>\",\n \"path\": \"<string>\",\n \"expires\": 123,\n \"httpOnly\": true,\n \"secure\": true\n }\n ],\n \"priority\": \"normal\",\n \"cache\": false,\n \"webhookUrl\": \"<string>\",\n \"webhookSecret\": \"<string>\",\n \"store\": false,\n \"storage_path\": \"<string>\",\n \"storage_bucket\": \"<string>\",\n \"storage_endpoint\": \"<string>\",\n \"storage_region\": \"auto\",\n \"storage_access_key_id\": \"<string>\",\n \"storage_secret_access_key\": \"<string>\",\n \"storage_public_domain\": \"<string>\",\n \"storage_return_location\": true,\n \"markdown\": false,\n \"html\": false,\n \"links\": false,\n \"images\": false,\n \"videos\": false,\n \"fonts\": false,\n \"colors\": false,\n \"structure\": false,\n \"design\": false,\n \"blueprint\": false,\n \"viewports\": [\n \"desktop\",\n \"mobile\"\n ],\n \"screenshots\": true,\n \"interpret\": false,\n \"provider\": \"deepseek\",\n \"refresh\": false,\n \"async\": false\n}"
response = http.request(request)
puts response.read_body{
"success": "<unknown>",
"type": "<unknown>",
"url": "<string>",
"metadata": {},
"renderTime": 1,
"markdown": "<string>",
"html": "<string>",
"links": [
"<string>"
],
"images": [
"<string>"
],
"videos": [
"<string>"
],
"fonts": [
{}
],
"colors": [
{}
],
"structure": {},
"design": {
"tokens": {},
"color": {},
"typography": {},
"breakpoints": [
{}
],
"motion": {},
"libraries": [
{}
],
"coverage": {}
},
"blueprint": {
"version": 123,
"viewports": [
{
"width": 123,
"height": 123,
"documentHeight": 123,
"screenshot": "<string>"
}
],
"regions": [
{
"id": "<string>",
"order": 123,
"evidence": [
"<string>"
],
"selector": "<string>",
"tag": "<string>",
"box": [
123
],
"nodeCount": 123,
"skeleton": [
{}
],
"components": [
{}
],
"motion": [
{
"nodeId": "<string>",
"type": "<string>",
"primitives": [],
"detail": {},
"tier": "<string>",
"source": "<string>",
"trigger": {
"delayMs": 123,
"scrollPx": 123,
"threshold": 123,
"startPx": 123,
"endPx": 123,
"pinned": true
},
"timing": {
"durationMs": 123,
"delayMs": 123,
"easing": "<string>",
"easingAlias": "<string>",
"iterations": 123,
"direction": "<string>",
"fill": "<string>"
},
"animationName": "<string>",
"keyframes": [
{}
],
"keyframesRef": "<string>",
"addedClasses": [
"<string>"
],
"selector": "<string>",
"modifiers": {
"stagger": {
"stepMs": 123,
"count": 123
}
}
}
],
"responsive": [
{}
]
}
],
"limitations": [
{
"note": "<string>",
"count": 123,
"detail": [
"<string>"
]
}
],
"stats": {},
"repeaters": [
{}
],
"tech": [
{
"name": "<string>",
"categoryLabel": "<string>",
"version": "<string>",
"evidence": [
{
"value": "<string>"
}
]
}
],
"stylesheets": {},
"motionOrphans": [
{
"nodeId": "<string>",
"type": "<string>",
"primitives": [],
"detail": {},
"tier": "<string>",
"source": "<string>",
"trigger": {
"delayMs": 123,
"scrollPx": 123,
"threshold": 123,
"startPx": 123,
"endPx": 123,
"pinned": true
},
"timing": {
"durationMs": 123,
"delayMs": 123,
"easing": "<string>",
"easingAlias": "<string>",
"iterations": 123,
"direction": "<string>",
"fill": "<string>"
},
"animationName": "<string>",
"keyframes": [
{}
],
"keyframesRef": "<string>",
"addedClasses": [
"<string>"
],
"selector": "<string>",
"modifiers": {
"stagger": {
"stepMs": 123,
"count": 123
}
}
}
],
"instrumentation": {},
"truncated": [
"<string>"
],
"capturedAt": "2023-11-07T05:31:56Z",
"interpretation": {
"document": "<string>",
"promptVersion": "<string>",
"sections": {},
"grounding": {
"unknownLiterals": [
"<string>"
]
},
"coverage": {},
"provider": {
"label": "deepseek",
"model": "<string>",
"host": "<string>",
"dataPolicy": {},
"dataResidency": "<string>",
"settings": {},
"latencyMs": 1,
"finishReason": "<string>"
},
"usage": {
"inputTokens": 1,
"outputTokens": 1,
"totalTokens": 1,
"cacheHitTokens": 1,
"cacheMissTokens": 1,
"reasoningTokens": 1,
"providerDetails": {}
},
"cache": {
"hit": true
}
},
"interpretationError": {
"type": "<string>",
"message": "<string>",
"retryable": true,
"reason": "<string>",
"missingHeadings": [
"<string>"
],
"unknownLiteralCount": 1
}
},
"credits": {
"charged": 1,
"refunded": 1,
"net": 1
},
"startedAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z"
}{
"success": "<unknown>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "<unknown>",
"statusUrl": "<string>"
}{
"success": true,
"error": "<string>",
"type": "<string>",
"message": "<string>",
"fields": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"success": true,
"error": "<string>",
"type": "<string>",
"message": "<string>",
"fields": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"success": true,
"error": "<string>",
"type": "<string>",
"message": "<string>",
"fields": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"success": true,
"error": "<string>",
"type": "<string>",
"message": "<string>",
"fields": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"message": "<string>",
"retryable": true,
"reason": "<string>",
"missingHeadings": [
"<string>"
],
"unknownLiteralCount": 1
}Capture a page snapshot
curl --request POST \
--url https://api.scrinly.com/render/snapshot \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"timeout": 30,
"waitUntil": "networkidle2",
"width": 1970,
"height": 1130,
"device": "<string>",
"theme": "light",
"blockCookieBanners": true,
"blockAds": true,
"blockChatWidgets": true,
"blockPopups": true,
"blockAccessibilityWidgets": true,
"hideSelectors": [
"<string>"
],
"clickSelectors": [
"<string>"
],
"scrollToElement": "<string>",
"headers": {},
"cookies": [
{
"name": "<string>",
"value": "<string>",
"domain": "<string>",
"path": "<string>",
"expires": 123,
"httpOnly": true,
"secure": true
}
],
"priority": "normal",
"cache": false,
"webhookUrl": "<string>",
"webhookSecret": "<string>",
"store": false,
"storage_path": "<string>",
"storage_bucket": "<string>",
"storage_endpoint": "<string>",
"storage_region": "auto",
"storage_access_key_id": "<string>",
"storage_secret_access_key": "<string>",
"storage_public_domain": "<string>",
"storage_return_location": true,
"markdown": false,
"html": false,
"links": false,
"images": false,
"videos": false,
"fonts": false,
"colors": false,
"structure": false,
"design": false,
"blueprint": false,
"viewports": [
"desktop",
"mobile"
],
"screenshots": true,
"interpret": false,
"provider": "deepseek",
"refresh": false,
"async": false
}
'import requests
url = "https://api.scrinly.com/render/snapshot"
payload = {
"url": "<string>",
"timeout": 30,
"waitUntil": "networkidle2",
"width": 1970,
"height": 1130,
"device": "<string>",
"theme": "light",
"blockCookieBanners": True,
"blockAds": True,
"blockChatWidgets": True,
"blockPopups": True,
"blockAccessibilityWidgets": True,
"hideSelectors": ["<string>"],
"clickSelectors": ["<string>"],
"scrollToElement": "<string>",
"headers": {},
"cookies": [
{
"name": "<string>",
"value": "<string>",
"domain": "<string>",
"path": "<string>",
"expires": 123,
"httpOnly": True,
"secure": True
}
],
"priority": "normal",
"cache": False,
"webhookUrl": "<string>",
"webhookSecret": "<string>",
"store": False,
"storage_path": "<string>",
"storage_bucket": "<string>",
"storage_endpoint": "<string>",
"storage_region": "auto",
"storage_access_key_id": "<string>",
"storage_secret_access_key": "<string>",
"storage_public_domain": "<string>",
"storage_return_location": True,
"markdown": False,
"html": False,
"links": False,
"images": False,
"videos": False,
"fonts": False,
"colors": False,
"structure": False,
"design": False,
"blueprint": False,
"viewports": ["desktop", "mobile"],
"screenshots": True,
"interpret": False,
"provider": "deepseek",
"refresh": False,
"async": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
url: '<string>',
timeout: 30,
waitUntil: 'networkidle2',
width: 1970,
height: 1130,
device: '<string>',
theme: 'light',
blockCookieBanners: true,
blockAds: true,
blockChatWidgets: true,
blockPopups: true,
blockAccessibilityWidgets: true,
hideSelectors: ['<string>'],
clickSelectors: ['<string>'],
scrollToElement: '<string>',
headers: {},
cookies: [
{
name: '<string>',
value: '<string>',
domain: '<string>',
path: '<string>',
expires: 123,
httpOnly: true,
secure: true
}
],
priority: 'normal',
cache: false,
webhookUrl: '<string>',
webhookSecret: '<string>',
store: false,
storage_path: '<string>',
storage_bucket: '<string>',
storage_endpoint: '<string>',
storage_region: 'auto',
storage_access_key_id: '<string>',
storage_secret_access_key: '<string>',
storage_public_domain: '<string>',
storage_return_location: true,
markdown: false,
html: false,
links: false,
images: false,
videos: false,
fonts: false,
colors: false,
structure: false,
design: false,
blueprint: false,
viewports: ['desktop', 'mobile'],
screenshots: true,
interpret: false,
provider: 'deepseek',
refresh: false,
async: false
})
};
fetch('https://api.scrinly.com/render/snapshot', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.scrinly.com/render/snapshot",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'url' => '<string>',
'timeout' => 30,
'waitUntil' => 'networkidle2',
'width' => 1970,
'height' => 1130,
'device' => '<string>',
'theme' => 'light',
'blockCookieBanners' => true,
'blockAds' => true,
'blockChatWidgets' => true,
'blockPopups' => true,
'blockAccessibilityWidgets' => true,
'hideSelectors' => [
'<string>'
],
'clickSelectors' => [
'<string>'
],
'scrollToElement' => '<string>',
'headers' => [
],
'cookies' => [
[
'name' => '<string>',
'value' => '<string>',
'domain' => '<string>',
'path' => '<string>',
'expires' => 123,
'httpOnly' => true,
'secure' => true
]
],
'priority' => 'normal',
'cache' => false,
'webhookUrl' => '<string>',
'webhookSecret' => '<string>',
'store' => false,
'storage_path' => '<string>',
'storage_bucket' => '<string>',
'storage_endpoint' => '<string>',
'storage_region' => 'auto',
'storage_access_key_id' => '<string>',
'storage_secret_access_key' => '<string>',
'storage_public_domain' => '<string>',
'storage_return_location' => true,
'markdown' => false,
'html' => false,
'links' => false,
'images' => false,
'videos' => false,
'fonts' => false,
'colors' => false,
'structure' => false,
'design' => false,
'blueprint' => false,
'viewports' => [
'desktop',
'mobile'
],
'screenshots' => true,
'interpret' => false,
'provider' => 'deepseek',
'refresh' => false,
'async' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.scrinly.com/render/snapshot"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"timeout\": 30,\n \"waitUntil\": \"networkidle2\",\n \"width\": 1970,\n \"height\": 1130,\n \"device\": \"<string>\",\n \"theme\": \"light\",\n \"blockCookieBanners\": true,\n \"blockAds\": true,\n \"blockChatWidgets\": true,\n \"blockPopups\": true,\n \"blockAccessibilityWidgets\": true,\n \"hideSelectors\": [\n \"<string>\"\n ],\n \"clickSelectors\": [\n \"<string>\"\n ],\n \"scrollToElement\": \"<string>\",\n \"headers\": {},\n \"cookies\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\",\n \"domain\": \"<string>\",\n \"path\": \"<string>\",\n \"expires\": 123,\n \"httpOnly\": true,\n \"secure\": true\n }\n ],\n \"priority\": \"normal\",\n \"cache\": false,\n \"webhookUrl\": \"<string>\",\n \"webhookSecret\": \"<string>\",\n \"store\": false,\n \"storage_path\": \"<string>\",\n \"storage_bucket\": \"<string>\",\n \"storage_endpoint\": \"<string>\",\n \"storage_region\": \"auto\",\n \"storage_access_key_id\": \"<string>\",\n \"storage_secret_access_key\": \"<string>\",\n \"storage_public_domain\": \"<string>\",\n \"storage_return_location\": true,\n \"markdown\": false,\n \"html\": false,\n \"links\": false,\n \"images\": false,\n \"videos\": false,\n \"fonts\": false,\n \"colors\": false,\n \"structure\": false,\n \"design\": false,\n \"blueprint\": false,\n \"viewports\": [\n \"desktop\",\n \"mobile\"\n ],\n \"screenshots\": true,\n \"interpret\": false,\n \"provider\": \"deepseek\",\n \"refresh\": false,\n \"async\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.scrinly.com/render/snapshot")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"timeout\": 30,\n \"waitUntil\": \"networkidle2\",\n \"width\": 1970,\n \"height\": 1130,\n \"device\": \"<string>\",\n \"theme\": \"light\",\n \"blockCookieBanners\": true,\n \"blockAds\": true,\n \"blockChatWidgets\": true,\n \"blockPopups\": true,\n \"blockAccessibilityWidgets\": true,\n \"hideSelectors\": [\n \"<string>\"\n ],\n \"clickSelectors\": [\n \"<string>\"\n ],\n \"scrollToElement\": \"<string>\",\n \"headers\": {},\n \"cookies\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\",\n \"domain\": \"<string>\",\n \"path\": \"<string>\",\n \"expires\": 123,\n \"httpOnly\": true,\n \"secure\": true\n }\n ],\n \"priority\": \"normal\",\n \"cache\": false,\n \"webhookUrl\": \"<string>\",\n \"webhookSecret\": \"<string>\",\n \"store\": false,\n \"storage_path\": \"<string>\",\n \"storage_bucket\": \"<string>\",\n \"storage_endpoint\": \"<string>\",\n \"storage_region\": \"auto\",\n \"storage_access_key_id\": \"<string>\",\n \"storage_secret_access_key\": \"<string>\",\n \"storage_public_domain\": \"<string>\",\n \"storage_return_location\": true,\n \"markdown\": false,\n \"html\": false,\n \"links\": false,\n \"images\": false,\n \"videos\": false,\n \"fonts\": false,\n \"colors\": false,\n \"structure\": false,\n \"design\": false,\n \"blueprint\": false,\n \"viewports\": [\n \"desktop\",\n \"mobile\"\n ],\n \"screenshots\": true,\n \"interpret\": false,\n \"provider\": \"deepseek\",\n \"refresh\": false,\n \"async\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.scrinly.com/render/snapshot")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"<string>\",\n \"timeout\": 30,\n \"waitUntil\": \"networkidle2\",\n \"width\": 1970,\n \"height\": 1130,\n \"device\": \"<string>\",\n \"theme\": \"light\",\n \"blockCookieBanners\": true,\n \"blockAds\": true,\n \"blockChatWidgets\": true,\n \"blockPopups\": true,\n \"blockAccessibilityWidgets\": true,\n \"hideSelectors\": [\n \"<string>\"\n ],\n \"clickSelectors\": [\n \"<string>\"\n ],\n \"scrollToElement\": \"<string>\",\n \"headers\": {},\n \"cookies\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\",\n \"domain\": \"<string>\",\n \"path\": \"<string>\",\n \"expires\": 123,\n \"httpOnly\": true,\n \"secure\": true\n }\n ],\n \"priority\": \"normal\",\n \"cache\": false,\n \"webhookUrl\": \"<string>\",\n \"webhookSecret\": \"<string>\",\n \"store\": false,\n \"storage_path\": \"<string>\",\n \"storage_bucket\": \"<string>\",\n \"storage_endpoint\": \"<string>\",\n \"storage_region\": \"auto\",\n \"storage_access_key_id\": \"<string>\",\n \"storage_secret_access_key\": \"<string>\",\n \"storage_public_domain\": \"<string>\",\n \"storage_return_location\": true,\n \"markdown\": false,\n \"html\": false,\n \"links\": false,\n \"images\": false,\n \"videos\": false,\n \"fonts\": false,\n \"colors\": false,\n \"structure\": false,\n \"design\": false,\n \"blueprint\": false,\n \"viewports\": [\n \"desktop\",\n \"mobile\"\n ],\n \"screenshots\": true,\n \"interpret\": false,\n \"provider\": \"deepseek\",\n \"refresh\": false,\n \"async\": false\n}"
response = http.request(request)
puts response.read_body{
"success": "<unknown>",
"type": "<unknown>",
"url": "<string>",
"metadata": {},
"renderTime": 1,
"markdown": "<string>",
"html": "<string>",
"links": [
"<string>"
],
"images": [
"<string>"
],
"videos": [
"<string>"
],
"fonts": [
{}
],
"colors": [
{}
],
"structure": {},
"design": {
"tokens": {},
"color": {},
"typography": {},
"breakpoints": [
{}
],
"motion": {},
"libraries": [
{}
],
"coverage": {}
},
"blueprint": {
"version": 123,
"viewports": [
{
"width": 123,
"height": 123,
"documentHeight": 123,
"screenshot": "<string>"
}
],
"regions": [
{
"id": "<string>",
"order": 123,
"evidence": [
"<string>"
],
"selector": "<string>",
"tag": "<string>",
"box": [
123
],
"nodeCount": 123,
"skeleton": [
{}
],
"components": [
{}
],
"motion": [
{
"nodeId": "<string>",
"type": "<string>",
"primitives": [],
"detail": {},
"tier": "<string>",
"source": "<string>",
"trigger": {
"delayMs": 123,
"scrollPx": 123,
"threshold": 123,
"startPx": 123,
"endPx": 123,
"pinned": true
},
"timing": {
"durationMs": 123,
"delayMs": 123,
"easing": "<string>",
"easingAlias": "<string>",
"iterations": 123,
"direction": "<string>",
"fill": "<string>"
},
"animationName": "<string>",
"keyframes": [
{}
],
"keyframesRef": "<string>",
"addedClasses": [
"<string>"
],
"selector": "<string>",
"modifiers": {
"stagger": {
"stepMs": 123,
"count": 123
}
}
}
],
"responsive": [
{}
]
}
],
"limitations": [
{
"note": "<string>",
"count": 123,
"detail": [
"<string>"
]
}
],
"stats": {},
"repeaters": [
{}
],
"tech": [
{
"name": "<string>",
"categoryLabel": "<string>",
"version": "<string>",
"evidence": [
{
"value": "<string>"
}
]
}
],
"stylesheets": {},
"motionOrphans": [
{
"nodeId": "<string>",
"type": "<string>",
"primitives": [],
"detail": {},
"tier": "<string>",
"source": "<string>",
"trigger": {
"delayMs": 123,
"scrollPx": 123,
"threshold": 123,
"startPx": 123,
"endPx": 123,
"pinned": true
},
"timing": {
"durationMs": 123,
"delayMs": 123,
"easing": "<string>",
"easingAlias": "<string>",
"iterations": 123,
"direction": "<string>",
"fill": "<string>"
},
"animationName": "<string>",
"keyframes": [
{}
],
"keyframesRef": "<string>",
"addedClasses": [
"<string>"
],
"selector": "<string>",
"modifiers": {
"stagger": {
"stepMs": 123,
"count": 123
}
}
}
],
"instrumentation": {},
"truncated": [
"<string>"
],
"capturedAt": "2023-11-07T05:31:56Z",
"interpretation": {
"document": "<string>",
"promptVersion": "<string>",
"sections": {},
"grounding": {
"unknownLiterals": [
"<string>"
]
},
"coverage": {},
"provider": {
"label": "deepseek",
"model": "<string>",
"host": "<string>",
"dataPolicy": {},
"dataResidency": "<string>",
"settings": {},
"latencyMs": 1,
"finishReason": "<string>"
},
"usage": {
"inputTokens": 1,
"outputTokens": 1,
"totalTokens": 1,
"cacheHitTokens": 1,
"cacheMissTokens": 1,
"reasoningTokens": 1,
"providerDetails": {}
},
"cache": {
"hit": true
}
},
"interpretationError": {
"type": "<string>",
"message": "<string>",
"retryable": true,
"reason": "<string>",
"missingHeadings": [
"<string>"
],
"unknownLiteralCount": 1
}
},
"credits": {
"charged": 1,
"refunded": 1,
"net": 1
},
"startedAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z"
}{
"success": "<unknown>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "<unknown>",
"statusUrl": "<string>"
}{
"success": true,
"error": "<string>",
"type": "<string>",
"message": "<string>",
"fields": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"success": true,
"error": "<string>",
"type": "<string>",
"message": "<string>",
"fields": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"success": true,
"error": "<string>",
"type": "<string>",
"message": "<string>",
"fields": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"success": true,
"error": "<string>",
"type": "<string>",
"message": "<string>",
"fields": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"message": "<string>",
"retryable": true,
"reason": "<string>",
"missingHeadings": [
"<string>"
],
"unknownLiteralCount": 1
}Authorizations
Customer API key from the Scrinly dashboard.
Headers
Ephemeral server-to-server key for the selected AI provider. Never put it in a URL or JSON body.
Body
2048^https?://10 <= x <= 60load, domcontentloaded, networkidle0, networkidle2 100 <= x <= 3840100 <= x <= 2160Supported device preset; overrides width and height.
light, dark 111Show child attributes
Show child attributes
Show child attributes
Show child attributes
low, normal, high 2048^https?://b2, s3, r2 Implies design and requires synchronous mode. Adds 6 credits.
Widest first. Only valid with blueprint=true.
desktop, mobile One stored screenshot per viewport. Only valid with blueprint=true.
Generate a grounded prose reading of the blueprint. Only valid with blueprint=true. Adds 3 credits, or 1 with your own provider key.
deepseek, openai Response
Snapshot, optionally carrying a blueprint and its interpretation. blueprint_only reports a capture that succeeded with a failed interpretation.
2048^https?://x >= 0blueprint_only means the capture succeeded and the interpretation did not — see blueprint.interpretationError. The blueprint is present and its credits are not refunded.
completed, blueprint_only Deterministic extraction of authored tokens and observed design signals.
Show child attributes
Show child attributes
Everything needed to rebuild the page, attributed to the parts of the page it belongs to. Motion and responsive layout are filed under regions rather than listed flat, so "what does the hero do" is answerable. url, metadata, markdown, links, images and design are not restated here — they are already top-level fields of the same response.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
