> ## Documentation Index
> Fetch the complete documentation index at: https://docs.screenframed.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Capture

Create a styled screenshot render from a URL with device frames, backgrounds, elements, text, AI styling, and output controls.

**Create a styled capture**

Captures a URL, composes the requested styling, stores the image, and returns a CDN URL.

## Request example

**Styled browser screenshot**

```bash
curl -X POST "https://screenframed.com/v1/capture" \
  -H "Authorization: Bearer $SCREENFRAMED_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://screenframed.com",
    "device": "browser-macos",
    "background_preset": "midnight",
    "shadow": "float",
    "aspect_ratio": "16:9"
  }'
```

## Required body fields

**url**

The HTTP or HTTPS URL to capture. `site` is accepted as a convenience alias.

## Common optional fields

**device**

Frame or viewport preset. Values include `browser-macos`, `browser-windows`, `iphone-16-pro`, `ipad-pro-m4`, and `macbook-pro-16`.

**background_preset**

Named gradient preset such as `aurora`, `sunset`, `ocean`, `midnight`, `arctic`, `dusk`, `forest`, or `ember`.

**background**

Hosted ScreenFramed background reference such as `fractal-glass-gradients/fractal-glass-34`. The API resolves it to a render-sized image variant.

**selector**

CSS selector for deterministic element capture.

**element**

Natural-language description of the element to capture.

**prompt**

Natural-language screenshot request. ScreenFramed resolves it to normal capture params, then merges explicit fields on top.

**ai_style**

Ask ScreenFramed to pick visual styling from page type, tone, and brand colors.

**ai_copy**

Ask ScreenFramed to generate title, subtitle, or badge copy from the captured page.

**async**

When `true`, returns a job id with status `pending` instead of waiting for the render to finish.

## Response fields

**id**

Capture id, prefixed with `cap_`.

**url**

CDN URL for the generated image.

**width**

Final image width in pixels.

**height**

Final image height in pixels.

**credits_used**

Credits charged for this render. Cached responses return `0`.

**element_resolved**

When element capture resolves a target, includes method, selector, and bounds.

**ai_decisions**

When AI features run, includes page type, visual tone, generated copy, and brand colors when available.

**Created**

```json
{
  "id": "cap_01KNS1WNPW9FCHZSK4XNTHMB0H",
  "url": "https://cdn.screenframed.com/r/cap_01KNS1WNPW9FCHZSK4XNTHMB0H.png",
  "width": 1600,
  "height": 900,
  "format": "png",
  "duration_ms": 1842,
  "credits_used": 3,
  "cached": false,
  "warnings": [],
  "created_at": "2026-04-27T15:00:00.000Z"
}
```

## Async response

When `async` is `true`, the API responds with `202`:

```json
{
  "job_id": "job_01KNS1WNPW9FCHZSK4XNTHMB0H",
  "status": "pending"
}
```

Poll with [Jobs](/api/jobs) or provide `webhook_url`.

## GET shorthand

`GET /v1/capture` supports query-string shorthand for simple integrations and signed URLs:

```bash
curl "https://screenframed.com/v1/capture?site=screenframed.com&device=browser-macos&bg=midnight&shadow=soft" \
  -H "Authorization: Bearer $SCREENFRAMED_API_KEY"
```

For complex payloads, use `payload` with base64url-encoded JSON. Explicit query parameters override values inside `payload`.

For production server integrations, prefer `POST /v1/capture` because nested JSON is clearer and easier to validate.

` POST /v1/capture `

Create a styled capture

Captures a URL, composes the requested styling, stores the image, and returns a CDN URL. Set `async` to `true` to queue a job instead.

## Servers

- ` https://screenframed.com ` — Production

## Authentication

The operation accepts these alternatives. Schemes within one alternative are required together.

### Alternative 1

- ` bearerAuth `: ` http `

  - HTTP scheme: ` bearer `

  - ScreenFramed API key, such as `sf_live_...`.

## Request body (required)

Content type: ` application/json `

- ` value `: type ` object `

  - Required fields: ` url `

  - ` url `: type ` string `; format ` uri `

  - ` project_id `: type ` string `

    - pattern: ` "^prj_[A-Z0-9]{26}$" `

  - ` auth_profile_id `: type ` string `

    - pattern: ` "^ap_[A-Z0-9]{26}$" `

  - ` viewport `: type ` object `

    - Required fields: ` width `, ` height `

    - ` width `: type ` integer `

      - minimum: ` 1 `

    - ` height `: type ` integer `

      - minimum: ` 1 `

  - ` capture_dpr `: type ` number `

    - minimum: ` 1 `

    - maximum: ` 4 `

  - ` user_agent `: type ` string `

    - minLength: ` 1 `

    - maxLength: ` 500 `

  - ` emulate_mobile `: type ` boolean `

  - ` emulate_touch `: type ` boolean `

  - ` wait_for `: type ` unknown `

    - ` oneOf alternative 1 `: type ` string `

      - enum: ` ["load","networkidle","domcontentloaded"] `

    - ` oneOf alternative 2 `: type ` number `

  - ` block `: type ` array `

    - ` array item `: type ` string `

      - enum: ` ["cookie-banners","ads","chat-widgets","popups"] `

  - ` inject_css `: type ` string `

  - ` device `: type ` string `

    - enum: ` ["iphone-16-pro","macbook-pro-16","ipad-pro-m4","browser-macos","browser-windows"] `

  - ` device_color `: type ` string `

  - ` device_scale `: type ` number `

    - minimum: ` 0.4 `

    - maximum: ` 1 `

  - ` background_style `: type ` string `

    - enum: ` ["gradient","solid","none","transparent"] `

  - ` background_preset `: type ` string `

    - enum: ` ["aurora","sunset","ocean","midnight","arctic","dusk","forest","ember","custom"] `

  - ` background_color `: type ` string `

  - ` background_gradient `: type ` string `

  - ` background `: type ` string ` — Hosted ScreenFramed background reference, e.g. fractal-glass-gradients/fractal-glass-34. Resolved to a render-sized image variant.

    - pattern: ` "^[A-Za-z0-9][A-Za-z0-9_-]*/[A-Za-z0-9][A-Za-z0-9_-]*$" `

  - ` background_image_url `: type ` string `; format ` uri ` — Custom public image URL. Overrides background when both are provided.

  - ` padding `: type ` number `

    - minimum: ` 0 `

    - maximum: ` 200 `

  - ` corner_radius `: type ` number `

    - minimum: ` 0 `

    - maximum: ` 40 `

  - ` shadow `: type ` string `

    - enum: ` ["none","soft","hard","glow","float"] `

  - ` shadow_color `: type ` string `

  - ` shadow_blur `: type ` number `

    - minimum: ` 0 `

    - maximum: ` 100 `

  - ` shadow_offset_x `: type ` number `

    - minimum: ` -100 `

    - maximum: ` 100 `

  - ` shadow_offset_y `: type ` number `

    - minimum: ` -100 `

    - maximum: ` 100 `

  - ` shadow_spread `: type ` number `

    - minimum: ` -50 `

    - maximum: ` 50 `

  - ` shadow_opacity `: type ` number `

    - minimum: ` 0 `

    - maximum: ` 1 `

  - ` perspective `: type ` string `

    - enum: ` ["none","tilt-left","tilt-right","tilt-up","tilt-down","tilt-left-strong","tilt-right-strong","iso-left","iso-right"] `

  - ` perspective_intensity `: type ` number `

    - minimum: ` 0 `

    - maximum: ` 100 `

  - ` camera_preset `: type ` string `

    - enum: ` ["hero","dashboard","flat","cinematic","detail"] `

  - ` tilt_x `: type ` number `

    - minimum: ` -30 `

    - maximum: ` 30 `

  - ` tilt_y `: type ` number `

    - minimum: ` -30 `

    - maximum: ` 30 `

  - ` roll `: type ` number `

    - minimum: ` -30 `

    - maximum: ` 30 `

  - ` zoom `: type ` number `

    - minimum: ` 50 `

    - maximum: ` 300 `

  - ` offset_x `: type ` number `

    - minimum: ` -2000 `

    - maximum: ` 2000 `

  - ` offset_y `: type ` number `

    - minimum: ` -2000 `

    - maximum: ` 2000 `

  - ` frame_scale `: type ` number `

  - ` layout `: type ` string `

    - enum: ` ["default","bottom-cropped","top-cropped"] `

  - ` depth_blur `: type ` number `

    - minimum: ` 0 `

    - maximum: ` 30 `

  - ` depth_blur_type `: type ` string `

    - enum: ` ["dir","radial","tilt","lens"] `

  - ` depth_blur_direction `: type ` string `

    - enum: ` ["top","bottom","left","right"] `

  - ` depth_blur_angle `: type ` number `

    - minimum: ` 0 `

    - maximum: ` 360 `

  - ` depth_blur_position `: type ` number `

    - minimum: ` 0 `

    - maximum: ` 1 `

  - ` depth_blur_band `: type ` number `

    - minimum: ` 0 `

    - maximum: ` 1 `

  - ` depth_blur_width `: type ` number `

    - minimum: ` 0 `

    - maximum: ` 1 `

  - ` title `: type ` string `

  - ` title_font `: type ` string `

  - ` title_size `: type ` number `

    - minimum: ` 24 `

    - maximum: ` 96 `

  - ` title_color `: type ` string `

  - ` title_position `: type ` string `

    - enum: ` ["above","below","bottom-left","top-left","overlay-bottom"] `

  - ` subtitle `: type ` string `

  - ` subtitle_font `: type ` string `

  - ` subtitle_size `: type ` number `

  - ` subtitle_color `: type ` string `

  - ` badge `: type ` string `

  - ` text_enabled `: type ` boolean `

  - ` text_content `: type ` string `

    - maxLength: ` 500 `

  - ` text_x `: type ` number `

    - minimum: ` 0 `

    - maximum: ` 1 `

  - ` text_y `: type ` number `

    - minimum: ` 0 `

    - maximum: ` 1 `

  - ` text_size `: type ` number `

    - minimum: ` 8 `

    - maximum: ` 1200 `

  - ` text_color `: type ` string `

  - ` text_gradient `: type ` string `

  - ` text_shadow `: type ` string `

  - ` text_weight `: type ` number `

    - minimum: ` 100 `

    - maximum: ` 900 `

  - ` text_font `: type ` string `

  - ` text_align `: type ` string `

    - enum: ` ["left","center","right"] `

  - ` text_max_width `: type ` number `

    - minimum: ` 0.1 `

    - maximum: ` 1 `

  - ` text_line_height `: type ` number `

    - minimum: ` 0.8 `

    - maximum: ` 2.5 `

  - ` text_autofit `: type ` boolean `

  - ` text_fit_min `: type ` number `

    - minimum: ` 6 `

    - maximum: ` 200 `

  - ` text_box_h `: type ` number `

    - minimum: ` 0.05 `

    - maximum: ` 1 `

  - ` text_vertical_align `: type ` string `

    - enum: ` ["top","middle","bottom"] `

  - ` ai `: type ` boolean `

  - ` ai_style `: type ` boolean `

  - ` ai_copy `: type ` boolean `

  - ` prompt `: type ` string `

  - ` element `: type ` string `

  - ` selector `: type ` string `

  - ` auto_balance `: type ` boolean `

  - ` inset `: type ` number `

    - minimum: ` 0 `

    - maximum: ` 100 `

  - ` inset_balance `: type ` boolean `

  - ` output `: type ` object `

    - ` format `: type ` string `

      - enum: ` ["png","webp","jpg"] `

    - ` width `: type ` integer `

      - minimum: ` 1 `

      - maximum: ` 6144 `

    - ` height `: type ` integer `

      - minimum: ` 1 `

      - maximum: ` 6144 `

    - ` quality `: type ` integer `

      - minimum: ` 1 `

      - maximum: ` 100 `

    - ` dpr `: type ` integer `

      - enum: ` [1,2,3] `

  - ` cache_ttl `: type ` number `

  - ` show_resolved_params `: type ` boolean `

  - ` dark_mode `: type ` boolean `

  - ` full_page `: type ` boolean `

  - ` hide_selectors `: type ` array `

    - ` array item `: type ` string `

  - ` border `: type ` string `

    - enum: ` ["none","subtle","bold","glass"] `

  - ` border_color `: type ` string `

  - ` border_width `: type ` number `

    - minimum: ` 0 `

    - maximum: ` 20 `

  - ` aspect_ratio `: type ` string `

    - enum: ` ["auto","16:9","4:3","1:1","3:2","9:16","21:9"] `

  - ` frame_ratio `: type ` string `

    - enum: ` ["auto","16:9","4:3","1:1","3:2","9:16","21:9"] `

  - ` watermark `: type ` string `

  - ` compose_mode `: type ` string `

    - enum: ` ["satori","browser"] `

  - ` async `: type ` boolean `

  - ` webhook_url `: type ` string `; format ` uri `

## Responses

### ` 201 ` — Capture created

Content type: ` application/json `

- ` value `: type ` object `

  - ` id `: type ` string `

    - pattern: ` "^cap_" `

  - ` url `: type ` string `; format ` uri `

  - ` width `: type ` integer `

  - ` height `: type ` integer `

  - ` format `: type ` string `

  - ` duration_ms `: type ` integer `

  - ` credits_used `: type ` integer `

  - ` cached `: type ` boolean `

  - ` warnings `: type ` array `

    - ` array item `: type ` string `

  - ` created_at `: type ` string `

  - ` resolved_params `: type ` object `

  - ` ai_decisions `: type ` object `

  - ` element_resolved `: type ` object `

### ` 202 ` — Async capture queued

Content type: ` application/json `

- ` value `: type ` object `

  - Required fields: ` job_id `, ` status `

  - ` job_id `: type ` string `

    - pattern: ` "^job_" `

  - ` status `: type ` string `

    - enum: ` ["pending"] `

### ` 400 ` — Error response

Content type: ` application/json `

- ` value `: type ` object `

  - Required fields: ` error `

  - ` error `: type ` object `

    - Required fields: ` code `, ` message `

    - ` code `: type ` string `

    - ` message `: type ` string `

    - ` details `: type ` object `

    - ` retry_after `: type ` integer `

### ` 401 ` — Error response

Content type: ` application/json `

- ` value `: type ` object `

  - Required fields: ` error `

  - ` error `: type ` object `

    - Required fields: ` code `, ` message `

    - ` code `: type ` string `

    - ` message `: type ` string `

    - ` details `: type ` object `

    - ` retry_after `: type ` integer `

### ` 402 ` — Error response

Content type: ` application/json `

- ` value `: type ` object `

  - Required fields: ` error `

  - ` error `: type ` object `

    - Required fields: ` code `, ` message `

    - ` code `: type ` string `

    - ` message `: type ` string `

    - ` details `: type ` object `

    - ` retry_after `: type ` integer `

### ` 403 ` — Error response

Content type: ` application/json `

- ` value `: type ` object `

  - Required fields: ` error `

  - ` error `: type ` object `

    - Required fields: ` code `, ` message `

    - ` code `: type ` string `

    - ` message `: type ` string `

    - ` details `: type ` object `

    - ` retry_after `: type ` integer `

### ` 422 ` — Error response

Content type: ` application/json `

- ` value `: type ` object `

  - Required fields: ` error `

  - ` error `: type ` object `

    - Required fields: ` code `, ` message `

    - ` code `: type ` string `

    - ` message `: type ` string `

    - ` details `: type ` object `

    - ` retry_after `: type ` integer `

### ` 429 ` — Error response

Content type: ` application/json `

- ` value `: type ` object `

  - Required fields: ` error `

  - ` error `: type ` object `

    - Required fields: ` code `, ` message `

    - ` code `: type ` string `

    - ` message `: type ` string `

    - ` details `: type ` object `

    - ` retry_after `: type ` integer `

## Request examples

### cURL

```curl
curl -X POST 'https://screenframed.com/v1/capture' \
  -H 'Authorization: Bearer YOUR_API_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
  "url": "https://example.com",
  "project_id": "string",
  "auth_profile_id": "string",
  "viewport": {
    "width": 1,
    "height": 1
  },
  "capture_dpr": 1,
  "user_agent": "string",
  "emulate_mobile": true,
  "emulate_touch": true,
  "wait_for": "load",
  "block": [
    "cookie-banners"
  ],
  "inject_css": "string",
  "device": "iphone-16-pro",
  "device_color": "string",
  "device_scale": 0.4,
  "background_style": "gradient",
  "background_preset": "aurora",
  "background_color": "string",
  "background_gradient": "string",
  "background": "string",
  "background_image_url": "https://example.com",
  "padding": 0,
  "corner_radius": 0,
  "shadow": "none",
  "shadow_color": "string",
  "shadow_blur": 0,
  "shadow_offset_x": -100,
  "shadow_offset_y": -100,
  "shadow_spread": -50,
  "shadow_opacity": 0,
  "perspective": "none",
  "perspective_intensity": 0,
  "camera_preset": "hero",
  "tilt_x": -30,
  "tilt_y": -30,
  "roll": -30,
  "zoom": 50,
  "offset_x": -2000,
  "offset_y": -2000,
  "frame_scale": 0,
  "layout": "default",
  "depth_blur": 0,
  "depth_blur_type": "dir",
  "depth_blur_direction": "top",
  "depth_blur_angle": 0,
  "depth_blur_position": 0,
  "depth_blur_band": 0,
  "depth_blur_width": 0,
  "title": "string",
  "title_font": "string",
  "title_size": 24,
  "title_color": "string",
  "title_position": "above",
  "subtitle": "string",
  "subtitle_font": "string",
  "subtitle_size": 0,
  "subtitle_color": "string",
  "badge": "string",
  "text_enabled": true,
  "text_content": "string",
  "text_x": 0,
  "text_y": 0,
  "text_size": 8,
  "text_color": "string",
  "text_gradient": "string",
  "text_shadow": "string",
  "text_weight": 100,
  "text_font": "string",
  "text_align": "left",
  "text_max_width": 0.1,
  "text_line_height": 0.8,
  "text_autofit": true,
  "text_fit_min": 6,
  "text_box_h": 0.05,
  "text_vertical_align": "top",
  "ai": true,
  "ai_style": true,
  "ai_copy": true,
  "prompt": "string",
  "element": "string",
  "selector": "string",
  "auto_balance": true,
  "inset": 0,
  "inset_balance": true,
  "output": {
    "format": "png",
    "width": 1,
    "height": 1,
    "quality": 1,
    "dpr": 1
  },
  "cache_ttl": 0,
  "show_resolved_params": true,
  "dark_mode": true,
  "full_page": true,
  "hide_selectors": [
    "string"
  ],
  "border": "none",
  "border_color": "string",
  "border_width": 0,
  "aspect_ratio": "auto",
  "frame_ratio": "auto",
  "watermark": "string",
  "compose_mode": "satori",
  "async": true,
  "webhook_url": "https://example.com"
}'
```

### JavaScript

```javascript
const response = await fetch('https://screenframed.com/v1/capture', {
  method: 'POST',
  headers: {
      "Authorization": "Bearer YOUR_API_TOKEN",
      "Content-Type": "application/json"
  },
  body: JSON.stringify({
    "url": "https://example.com",
    "project_id": "string",
    "auth_profile_id": "string",
    "viewport": {
      "width": 1,
      "height": 1
    },
    "capture_dpr": 1,
    "user_agent": "string",
    "emulate_mobile": true,
    "emulate_touch": true,
    "wait_for": "load",
    "block": [
      "cookie-banners"
    ],
    "inject_css": "string",
    "device": "iphone-16-pro",
    "device_color": "string",
    "device_scale": 0.4,
    "background_style": "gradient",
    "background_preset": "aurora",
    "background_color": "string",
    "background_gradient": "string",
    "background": "string",
    "background_image_url": "https://example.com",
    "padding": 0,
    "corner_radius": 0,
    "shadow": "none",
    "shadow_color": "string",
    "shadow_blur": 0,
    "shadow_offset_x": -100,
    "shadow_offset_y": -100,
    "shadow_spread": -50,
    "shadow_opacity": 0,
    "perspective": "none",
    "perspective_intensity": 0,
    "camera_preset": "hero",
    "tilt_x": -30,
    "tilt_y": -30,
    "roll": -30,
    "zoom": 50,
    "offset_x": -2000,
    "offset_y": -2000,
    "frame_scale": 0,
    "layout": "default",
    "depth_blur": 0,
    "depth_blur_type": "dir",
    "depth_blur_direction": "top",
    "depth_blur_angle": 0,
    "depth_blur_position": 0,
    "depth_blur_band": 0,
    "depth_blur_width": 0,
    "title": "string",
    "title_font": "string",
    "title_size": 24,
    "title_color": "string",
    "title_position": "above",
    "subtitle": "string",
    "subtitle_font": "string",
    "subtitle_size": 0,
    "subtitle_color": "string",
    "badge": "string",
    "text_enabled": true,
    "text_content": "string",
    "text_x": 0,
    "text_y": 0,
    "text_size": 8,
    "text_color": "string",
    "text_gradient": "string",
    "text_shadow": "string",
    "text_weight": 100,
    "text_font": "string",
    "text_align": "left",
    "text_max_width": 0.1,
    "text_line_height": 0.8,
    "text_autofit": true,
    "text_fit_min": 6,
    "text_box_h": 0.05,
    "text_vertical_align": "top",
    "ai": true,
    "ai_style": true,
    "ai_copy": true,
    "prompt": "string",
    "element": "string",
    "selector": "string",
    "auto_balance": true,
    "inset": 0,
    "inset_balance": true,
    "output": {
      "format": "png",
      "width": 1,
      "height": 1,
      "quality": 1,
      "dpr": 1
    },
    "cache_ttl": 0,
    "show_resolved_params": true,
    "dark_mode": true,
    "full_page": true,
    "hide_selectors": [
      "string"
    ],
    "border": "none",
    "border_color": "string",
    "border_width": 0,
    "aspect_ratio": "auto",
    "frame_ratio": "auto",
    "watermark": "string",
    "compose_mode": "satori",
    "async": true,
    "webhook_url": "https://example.com"
  })
});

const data = await response.json();
console.log(data);
```

### Python

```python
import requests

headers = {
    'Authorization': 'Bearer YOUR_API_TOKEN'
}

response = requests.post('https://screenframed.com/v1/capture', headers=headers, json={
  "url": "https://example.com",
  "project_id": "string",
  "auth_profile_id": "string",
  "viewport": {
    "width": 1,
    "height": 1
  },
  "capture_dpr": 1,
  "user_agent": "string",
  "emulate_mobile": true,
  "emulate_touch": true,
  "wait_for": "load",
  "block": [
    "cookie-banners"
  ],
  "inject_css": "string",
  "device": "iphone-16-pro",
  "device_color": "string",
  "device_scale": 0.4,
  "background_style": "gradient",
  "background_preset": "aurora",
  "background_color": "string",
  "background_gradient": "string",
  "background": "string",
  "background_image_url": "https://example.com",
  "padding": 0,
  "corner_radius": 0,
  "shadow": "none",
  "shadow_color": "string",
  "shadow_blur": 0,
  "shadow_offset_x": -100,
  "shadow_offset_y": -100,
  "shadow_spread": -50,
  "shadow_opacity": 0,
  "perspective": "none",
  "perspective_intensity": 0,
  "camera_preset": "hero",
  "tilt_x": -30,
  "tilt_y": -30,
  "roll": -30,
  "zoom": 50,
  "offset_x": -2000,
  "offset_y": -2000,
  "frame_scale": 0,
  "layout": "default",
  "depth_blur": 0,
  "depth_blur_type": "dir",
  "depth_blur_direction": "top",
  "depth_blur_angle": 0,
  "depth_blur_position": 0,
  "depth_blur_band": 0,
  "depth_blur_width": 0,
  "title": "string",
  "title_font": "string",
  "title_size": 24,
  "title_color": "string",
  "title_position": "above",
  "subtitle": "string",
  "subtitle_font": "string",
  "subtitle_size": 0,
  "subtitle_color": "string",
  "badge": "string",
  "text_enabled": true,
  "text_content": "string",
  "text_x": 0,
  "text_y": 0,
  "text_size": 8,
  "text_color": "string",
  "text_gradient": "string",
  "text_shadow": "string",
  "text_weight": 100,
  "text_font": "string",
  "text_align": "left",
  "text_max_width": 0.1,
  "text_line_height": 0.8,
  "text_autofit": true,
  "text_fit_min": 6,
  "text_box_h": 0.05,
  "text_vertical_align": "top",
  "ai": true,
  "ai_style": true,
  "ai_copy": true,
  "prompt": "string",
  "element": "string",
  "selector": "string",
  "auto_balance": true,
  "inset": 0,
  "inset_balance": true,
  "output": {
    "format": "png",
    "width": 1,
    "height": 1,
    "quality": 1,
    "dpr": 1
  },
  "cache_ttl": 0,
  "show_resolved_params": true,
  "dark_mode": true,
  "full_page": true,
  "hide_selectors": [
    "string"
  ],
  "border": "none",
  "border_color": "string",
  "border_width": 0,
  "aspect_ratio": "auto",
  "frame_ratio": "auto",
  "watermark": "string",
  "compose_mode": "satori",
  "async": true,
  "webhook_url": "https://example.com"
})
print(response.json())
```