# Viewport options

> Reference for the viewport options of the shotkit screenshot API, with an example request for each.

The browser window the page is rendered in. Pick a device preset or set the size yourself; explicit options override the preset.

### `viewport_device`

Emulate a device preset (sets size, DPR, UA, touch). Sets width, height, device pixel ratio, user agent, touch and mobile mode in one go. All ids are listed below.

Type: `enum`

<details>
<summary>All 153 device ids</summary>

`blackberry_playbook`, `blackberry_playbook_landscape`, `blackberry_z30`, `blackberry_z30_landscape`, `galaxy_note_3`, `galaxy_note_3_landscape`, `galaxy_note_ii`, `galaxy_note_ii_landscape`, `galaxy_s5`, `galaxy_s5_landscape`, `galaxy_s8`, `galaxy_s8_landscape`, `galaxy_s9+`, `galaxy_s9+_landscape`, `galaxy_s_iii`, `galaxy_s_iii_landscape`, `galaxy_tab_s4`, `galaxy_tab_s4_landscape`, `ipad`, `ipad_(gen_6)`, `ipad_(gen_6)_landscape`, `ipad_(gen_7)`, `ipad_(gen_7)_landscape`, `ipad_landscape`, `ipad_mini`, `ipad_mini_landscape`, `ipad_pro`, `ipad_pro_11`, `ipad_pro_11_landscape`, `ipad_pro_landscape`, `iphone_11`, `iphone_11_landscape`, `iphone_11_pro`, `iphone_11_pro_landscape`, `iphone_11_pro_max`, `iphone_11_pro_max_landscape`, `iphone_12`, `iphone_12_landscape`, `iphone_12_mini`, `iphone_12_mini_landscape`, `iphone_12_pro`, `iphone_12_pro_landscape`, `iphone_12_pro_max`, `iphone_12_pro_max_landscape`, `iphone_13`, `iphone_13_landscape`, `iphone_13_mini`, `iphone_13_mini_landscape`, `iphone_13_pro`, `iphone_13_pro_landscape`, `iphone_13_pro_max`, `iphone_13_pro_max_landscape`, `iphone_14`, `iphone_14_landscape`, `iphone_14_plus`, `iphone_14_plus_landscape`, `iphone_14_pro`, `iphone_14_pro_landscape`, `iphone_14_pro_max`, `iphone_14_pro_max_landscape`, `iphone_15`, `iphone_15_landscape`, `iphone_15_plus`, `iphone_15_plus_landscape`, `iphone_15_pro`, `iphone_15_pro_landscape`, `iphone_15_pro_max`, `iphone_15_pro_max_landscape`, `iphone_16`, `iphone_16_landscape`, `iphone_16_plus`, `iphone_16_plus_landscape`, `iphone_16_pro`, `iphone_16_pro_landscape`, `iphone_16_pro_max`, `iphone_16_pro_max_landscape`, `iphone_16e`, `iphone_16e_landscape`, `iphone_17`, `iphone_17_landscape`, `iphone_17_pro`, `iphone_17_pro_landscape`, `iphone_17_pro_max`, `iphone_17_pro_max_landscape`, `iphone_17e`, `iphone_17e_landscape`, `iphone_4`, `iphone_4_landscape`, `iphone_5`, `iphone_5_landscape`, `iphone_6`, `iphone_6_landscape`, `iphone_6_plus`, `iphone_6_plus_landscape`, `iphone_7`, `iphone_7_landscape`, `iphone_7_plus`, `iphone_7_plus_landscape`, `iphone_8`, `iphone_8_landscape`, `iphone_8_plus`, `iphone_8_plus_landscape`, `iphone_air`, `iphone_air_landscape`, `iphone_se`, `iphone_se_(3rd_gen)`, `iphone_se_(3rd_gen)_landscape`, `iphone_se_landscape`, `iphone_x`, `iphone_x_landscape`, `iphone_xr`, `iphone_xr_landscape`, `jiophone_2`, `jiophone_2_landscape`, `kindle_fire_hdx`, `kindle_fire_hdx_landscape`, `lg_optimus_l70`, `lg_optimus_l70_landscape`, `microsoft_lumia_550`, `microsoft_lumia_950`, `microsoft_lumia_950_landscape`, `moto_g4`, `moto_g4_landscape`, `nexus_10`, `nexus_10_landscape`, `nexus_4`, `nexus_4_landscape`, `nexus_5`, `nexus_5_landscape`, `nexus_5x`, `nexus_5x_landscape`, `nexus_6`, `nexus_6_landscape`, `nexus_6p`, `nexus_6p_landscape`, `nexus_7`, `nexus_7_landscape`, `nokia_lumia_520`, `nokia_lumia_520_landscape`, `nokia_n9`, `nokia_n9_landscape`, `pixel_2`, `pixel_2_landscape`, `pixel_2_xl`, `pixel_2_xl_landscape`, `pixel_3`, `pixel_3_landscape`, `pixel_4`, `pixel_4_landscape`, `pixel_4a_(5g)`, `pixel_4a_(5g)_landscape`, `pixel_5`, `pixel_5_landscape`

</details>

```bash
curl -X POST "https://shotkit.net/api/take" \
  -H "X-Access-Key: YOUR_ACCESS_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","viewport_device":"iphone_15_pro"}' \
  --fail-with-body -o shot.jpg
```

### `viewport_width`

Viewport width in px.

Type: `number` · Default: `1280` · Range: `1`–`7680`

```bash
curl -X POST "https://shotkit.net/api/take" \
  -H "X-Access-Key: YOUR_ACCESS_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","viewport_width":1920}' \
  --fail-with-body -o shot.jpg
```

### `viewport_height`

Viewport height in px.

Type: `number` · Default: `1024` · Range: `1`–`7680`

```bash
curl -X POST "https://shotkit.net/api/take" \
  -H "X-Access-Key: YOUR_ACCESS_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","viewport_height":1080}' \
  --fail-with-body -o shot.jpg
```

### `device_scale_factor`

Device pixel ratio (1–5). Animated formats record at 1×. A 1280×1024 viewport at `2` produces a 2560×2048 image.

Type: `number` · Default: `1` · Range: `1`–`5`

```bash
curl -X POST "https://shotkit.net/api/take" \
  -H "X-Access-Key: YOUR_ACCESS_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","device_scale_factor":2}' \
  --fail-with-body -o shot.jpg
```

### `viewport_mobile`

Respect the meta viewport tag. Makes the page honour `<meta name="viewport">`, like a phone browser.

Type: `boolean` · Default: `false`

```bash
curl -X POST "https://shotkit.net/api/take" \
  -H "X-Access-Key: YOUR_ACCESS_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","viewport_width":390,"viewport_height":844,"viewport_mobile":true}' \
  --fail-with-body -o shot.jpg
```

### `viewport_has_touch`

Enable touch events.

Type: `boolean` · Default: `false`

```bash
curl -X POST "https://shotkit.net/api/take" \
  -H "X-Access-Key: YOUR_ACCESS_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","viewport_width":390,"viewport_height":844,"viewport_has_touch":true}' \
  --fail-with-body -o shot.jpg
```

### `viewport_landscape`

Landscape orientation.

Type: `boolean` · Default: `false`

```bash
curl -X POST "https://shotkit.net/api/take" \
  -H "X-Access-Key: YOUR_ACCESS_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","viewport_device":"ipad_pro_11","viewport_landscape":true}' \
  --fail-with-body -o shot.jpg
```
