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

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 _landscape variant 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 IDDevice NameWidthHeightScale FactorUser Agent
iphone_14iPhone 143908443xMozilla/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_proiPhone 14 Pro3938523xMozilla/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_maxiPhone 14 Pro Max4309323xMozilla/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_15iPhone 153938523xMozilla/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_proiPhone 15 Pro3938523xMozilla/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_maxiPhone 15 Pro Max4309323xMozilla/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_16iPhone 163938523xMozilla/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_proiPhone 16 Pro4028743xMozilla/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_maxiPhone 16 Pro Max4409563xMozilla/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 IDDevice NameWidthHeightScale FactorUser Agent
ipad_10iPad (10th gen)82011802xMozilla/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_m2iPad Air M282011802xMozilla/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_11iPad Pro 11"83411942xMozilla/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_12iPad Pro 12.9"102413662xMozilla/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 IDDevice NameWidthHeightScale FactorUser Agent
pixel_7Pixel 74129152.625xMozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36
pixel_8Pixel 84129152.625xMozilla/5.0 (Linux; Android 14; Pixel 8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36
pixel_9Pixel 94129152.625xMozilla/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 IDDevice NameWidthHeightScale FactorUser Agent
galaxy_s23Galaxy S233607803xMozilla/5.0 (Linux; Android 13; SM-S911B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36
galaxy_s24Galaxy S243607803xMozilla/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 IDDevice NameWidthHeightScale FactorUser Agent
galaxy_tab_s9Galaxy Tab S9160025602xMozilla/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 IDDevice NameWidthHeightScale FactorUser Agent
surface_pro_9Surface Pro 913689122xMozilla/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 IDDevice NameWidthHeightScale FactorUser Agent
macbook_air_13MacBook Air 13"14709562xMozilla/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_14MacBook Pro 14"15129822xMozilla/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_16MacBook Pro 16"172811172xMozilla/5.0 (Macintosh; Intel Mac OS X 14_0) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15
imac_24iMac 24"224012602xMozilla/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

bash
# 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.png

Overriding preset values

You can set viewport_device and then override individual values. The preset provides the base configuration and your explicit parameters take precedence.

bash
# 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.png

Batch device testing

Use the /bulk endpoint to capture the same page across multiple devices in a single request.

bash
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 IDLandscape IDLandscape WidthLandscape Height
iphone_16_proiphone_16_pro_landscape874402
ipad_pro_11ipad_pro_11_landscape1194834
galaxy_s24galaxy_s24_landscape780360
macbook_pro_14macbook_pro_14_landscape9821512
bash
# 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.png

Alternatively, use the viewport_landscape=true parameter with any device preset:

bash
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.png

Custom Viewports

If the built-in device presets do not match your needs, you can define a fully custom viewport using individual parameters.

ParameterDescription
viewport_widthViewport width in CSS pixels (default: 1280)
viewport_heightViewport height in CSS pixels (default: 1024)
device_scale_factorDevice pixel ratio, 1--5 (default: 1)
viewport_mobileEnable mobile viewport meta tag handling (default: false)
viewport_has_touchEnable touch event emulation (default: false)
viewport_landscapeRotate to landscape orientation (default: false)
user_agentCustom User-Agent string

Examples

bash
# 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.png

Tip: For responsive design testing, combine custom viewports with the /bulk endpoint to capture breakpoints in a single request:

bash
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 }
    ]
  }'