Nodium Screenshot API -- Device Presets
Complete reference for all device viewport presets supported by the viewport_device parameter.
Base URL: https://api.nodium.io/api/v1/screenshot
Table of Contents
- Overview
- Apple -- iPhones
- Apple -- iPads
- Google Pixel
- Samsung Galaxy -- Phones
- Samsung Galaxy -- Tablets
- Microsoft Surface
- Apple -- Laptops & Desktops
- Usage Examples
- Landscape Variants
- Custom Viewports
Overview
The viewport_device parameter accepts a preset device ID that automatically configures the viewport width, height, device scale factor, mobile mode, touch emulation, and user agent string. This provides an accurate simulation of how a page renders on a specific device.
Key behavior:
- Each preset sets sensible defaults for all viewport-related parameters.
- Individual parameters (
viewport_width,viewport_height,device_scale_factor,user_agent) can override values from the preset. - Every portrait device also has a
_landscapevariant that swaps width and height. - The user agent strings listed below reflect the default values used by the API. These may be updated periodically to match current browser versions.
Apple -- iPhones
| Device Preset ID | Device Name | Width | Height | Scale Factor | User Agent |
|---|---|---|---|---|---|
iphone_14 | iPhone 14 | 390 | 844 | 3x | Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1 |
iphone_14_pro | iPhone 14 Pro | 393 | 852 | 3x | Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1 |
iphone_14_pro_max | iPhone 14 Pro Max | 430 | 932 | 3x | Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1 |
iphone_15 | iPhone 15 | 393 | 852 | 3x | Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1 |
iphone_15_pro | iPhone 15 Pro | 393 | 852 | 3x | Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1 |
iphone_15_pro_max | iPhone 15 Pro Max | 430 | 932 | 3x | Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1 |
iphone_16 | iPhone 16 | 393 | 852 | 3x | Mozilla/5.0 (iPhone; CPU iPhone OS 18_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Mobile/15E148 Safari/604.1 |
iphone_16_pro | iPhone 16 Pro | 402 | 874 | 3x | Mozilla/5.0 (iPhone; CPU iPhone OS 18_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Mobile/15E148 Safari/604.1 |
iphone_16_pro_max | iPhone 16 Pro Max | 440 | 956 | 3x | Mozilla/5.0 (iPhone; CPU iPhone OS 18_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Mobile/15E148 Safari/604.1 |
Apple -- iPads
| Device Preset ID | Device Name | Width | Height | Scale Factor | User Agent |
|---|---|---|---|---|---|
ipad_10 | iPad (10th gen) | 820 | 1180 | 2x | Mozilla/5.0 (iPad; CPU OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1 |
ipad_air_m2 | iPad Air M2 | 820 | 1180 | 2x | Mozilla/5.0 (iPad; CPU OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1 |
ipad_pro_11 | iPad Pro 11" | 834 | 1194 | 2x | Mozilla/5.0 (iPad; CPU OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1 |
ipad_pro_12 | iPad Pro 12.9" | 1024 | 1366 | 2x | Mozilla/5.0 (iPad; CPU OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1 |
Google Pixel
| Device Preset ID | Device Name | Width | Height | Scale Factor | User Agent |
|---|---|---|---|---|---|
pixel_7 | Pixel 7 | 412 | 915 | 2.625x | Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36 |
pixel_8 | Pixel 8 | 412 | 915 | 2.625x | Mozilla/5.0 (Linux; Android 14; Pixel 8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36 |
pixel_9 | Pixel 9 | 412 | 915 | 2.625x | Mozilla/5.0 (Linux; Android 15; Pixel 9) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Mobile Safari/537.36 |
Samsung Galaxy -- Phones
| Device Preset ID | Device Name | Width | Height | Scale Factor | User Agent |
|---|---|---|---|---|---|
galaxy_s23 | Galaxy S23 | 360 | 780 | 3x | Mozilla/5.0 (Linux; Android 13; SM-S911B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36 |
galaxy_s24 | Galaxy S24 | 360 | 780 | 3x | Mozilla/5.0 (Linux; Android 14; SM-S921B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36 |
Samsung Galaxy -- Tablets
| Device Preset ID | Device Name | Width | Height | Scale Factor | User Agent |
|---|---|---|---|---|---|
galaxy_tab_s9 | Galaxy Tab S9 | 1600 | 2560 | 2x | Mozilla/5.0 (Linux; Android 14; SM-X710) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 |
Microsoft Surface
| Device Preset ID | Device Name | Width | Height | Scale Factor | User Agent |
|---|---|---|---|---|---|
surface_pro_9 | Surface Pro 9 | 1368 | 912 | 2x | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 |
Apple -- Laptops & Desktops
| Device Preset ID | Device Name | Width | Height | Scale Factor | User Agent |
|---|---|---|---|---|---|
macbook_air_13 | MacBook Air 13" | 1470 | 956 | 2x | Mozilla/5.0 (Macintosh; Intel Mac OS X 14_0) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15 |
macbook_pro_14 | MacBook Pro 14" | 1512 | 982 | 2x | Mozilla/5.0 (Macintosh; Intel Mac OS X 14_0) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15 |
macbook_pro_16 | MacBook Pro 16" | 1728 | 1117 | 2x | Mozilla/5.0 (Macintosh; Intel Mac OS X 14_0) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15 |
imac_24 | iMac 24" | 2240 | 1260 | 2x | Mozilla/5.0 (Macintosh; Intel Mac OS X 14_0) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15 |
Usage Examples
Basic device emulation
# iPhone 16 Pro Max screenshot
curl "https://api.nodium.io/api/v1/screenshot/take?access_key=KEY&url=https://example.com&format=png&viewport_device=iphone_16_pro_max" \
-o iphone16promax.png
# iPad Pro 11" screenshot
curl "https://api.nodium.io/api/v1/screenshot/take?access_key=KEY&url=https://example.com&format=png&viewport_device=ipad_pro_11" \
-o ipadpro.png
# MacBook Pro 14" screenshot
curl "https://api.nodium.io/api/v1/screenshot/take?access_key=KEY&url=https://example.com&format=png&viewport_device=macbook_pro_14" \
-o macbookpro.pngOverriding preset values
You can set viewport_device and then override individual values. The preset provides the base configuration and your explicit parameters take precedence.
# iPhone 16 Pro with a wider viewport
curl "https://api.nodium.io/api/v1/screenshot/take?access_key=KEY&url=https://example.com&format=png&viewport_device=iphone_16_pro&viewport_width=500" \
-o iphone-wide.png
# Pixel 9 with a custom user agent
curl -X POST "https://api.nodium.io/api/v1/screenshot/take" \
-H "X-Access-Key: KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"format": "png",
"viewport_device": "pixel_9",
"user_agent": "MyCustomBot/1.0"
}' -o pixel-custom-ua.pngBatch device testing
Use the /bulk endpoint to capture the same page across multiple devices in a single request.
curl -X POST "https://api.nodium.io/api/v1/screenshot/bulk" \
-H "X-Access-Key: KEY" \
-H "Content-Type: application/json" \
-d '{
"execute": true,
"options": {
"url": "https://example.com",
"format": "png"
},
"requests": [
{ "viewport_device": "iphone_16_pro" },
{ "viewport_device": "pixel_9" },
{ "viewport_device": "galaxy_s24" },
{ "viewport_device": "ipad_pro_11" },
{ "viewport_device": "macbook_pro_14" },
{ "viewport_device": "surface_pro_9" }
]
}'Landscape Variants
Every portrait device preset has a corresponding landscape variant. Append _landscape to the device ID to use the landscape orientation, which swaps the width and height values.
| Portrait ID | Landscape ID | Landscape Width | Landscape Height |
|---|---|---|---|
iphone_16_pro | iphone_16_pro_landscape | 874 | 402 |
ipad_pro_11 | ipad_pro_11_landscape | 1194 | 834 |
galaxy_s24 | galaxy_s24_landscape | 780 | 360 |
macbook_pro_14 | macbook_pro_14_landscape | 982 | 1512 |
# iPhone 16 Pro in landscape
curl "https://api.nodium.io/api/v1/screenshot/take?access_key=KEY&url=https://example.com&format=png&viewport_device=iphone_16_pro_landscape" \
-o iphone-landscape.pngAlternatively, use the viewport_landscape=true parameter with any device preset:
curl "https://api.nodium.io/api/v1/screenshot/take?access_key=KEY&url=https://example.com&format=png&viewport_device=iphone_16_pro&viewport_landscape=true" \
-o iphone-landscape.pngCustom Viewports
If the built-in device presets do not match your needs, you can define a fully custom viewport using individual parameters.
| Parameter | Description |
|---|---|
viewport_width | Viewport width in CSS pixels (default: 1280) |
viewport_height | Viewport height in CSS pixels (default: 1024) |
device_scale_factor | Device pixel ratio, 1--5 (default: 1) |
viewport_mobile | Enable mobile viewport meta tag handling (default: false) |
viewport_has_touch | Enable touch event emulation (default: false) |
viewport_landscape | Rotate to landscape orientation (default: false) |
user_agent | Custom User-Agent string |
Examples
# 4K desktop viewport
curl "https://api.nodium.io/api/v1/screenshot/take?access_key=KEY&url=https://example.com&format=png&viewport_width=3840&viewport_height=2160&device_scale_factor=1" \
-o 4k.png
# Custom mobile viewport (e.g., a device not in the preset list)
curl -X POST "https://api.nodium.io/api/v1/screenshot/take" \
-H "X-Access-Key: KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"format": "png",
"viewport_width": 400,
"viewport_height": 860,
"device_scale_factor": 3,
"viewport_mobile": true,
"viewport_has_touch": true,
"user_agent": "Mozilla/5.0 (Linux; Android 15; CustomDevice) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Mobile Safari/537.36"
}' -o custom-mobile.png
# Social media card dimensions (Instagram post)
curl "https://api.nodium.io/api/v1/screenshot/take?access_key=KEY&url=https://example.com&format=png&viewport_width=1080&viewport_height=1080&device_scale_factor=1" \
-o instagram-post.pngTip: For responsive design testing, combine custom viewports with the /bulk endpoint to capture breakpoints in a single request:
curl -X POST "https://api.nodium.io/api/v1/screenshot/bulk" \
-H "X-Access-Key: KEY" \
-H "Content-Type: application/json" \
-d '{
"execute": true,
"options": { "url": "https://example.com", "format": "png" },
"requests": [
{ "viewport_width": 320, "viewport_height": 568, "viewport_mobile": true },
{ "viewport_width": 768, "viewport_height": 1024 },
{ "viewport_width": 1280, "viewport_height": 800 },
{ "viewport_width": 1920, "viewport_height": 1080 }
]
}'