# Render Options (/docs/options)

## Basic Options

Basic options for rendering such as setting the URL or HTML, and viewport width and height

### url

- **Type:** string
- **Default:** —
- **Accepts:** string

The URL or domain of the website you want to screenshot. We will automatically prepend http:// if it is missing.

Examples:
- Screenshot of urlbox.com: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com`
- Full page screenshot of apple.com: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=apple.com&full_page=true`
- Using a url which contains a query string: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=https%3A%2F%2Fgithub.com%2Fpuppeteer%2Fpuppeteer%2Fissues%3Fq%3Dis%253Aopen%2Bis%253Aissue%2Bscreenshot`

### html

- **Type:** string
- **Default:** —
- **Accepts:** string

The HTML you want to render.

Examples:
- Social / OG image: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?html=%0A%3C%21doctype+html%3E%3Chtml%3E%3Chead%3E%3Cmeta+charset%3D%22utf-8%22%3E%3Cstyle%3E%0A*%7Bmargin%3A0%3Bbox-sizing%3Aborder-box%7D%0Abody%7Bwidth%3A1200px%3Bheight%3A630px%3Bbackground%3A%23123524%3Bcolor%3A%23f3efe0%3Boverflow%3Ahidden%3Bposition%3Arelative%3B%0A+font-family%3AGeorgia%2C%22Times+New+Roman%22%2Cserif%7D%0A.mast%7Bposition%3Aabsolute%3Btop%3A0%3Bleft%3A0%3Bright%3A0%3Bpadding%3A34px+60px%3Bdisplay%3Aflex%3Bjustify-content%3Aspace-between%3B%0A+align-items%3Acenter%3Bborder-bottom%3A2px+solid+%23d7e04f%7D%0A.mast+.name%7Bfont-size%3A34px%3Bletter-spacing%3A.02em%3Bfont-weight%3A700%7D%0A.mast+.iss%7Bfont-family%3Asystem-ui%2Csans-serif%3Bfont-size%3A13px%3Bletter-spacing%3A.22em%3Bcolor%3A%23d7e04f%7D%0A.cover%7Bposition%3Aabsolute%3Bleft%3A60px%3Bbottom%3A120px%3Bmax-width%3A900px%7D%0A.cover+.over%7Bfont-family%3Asystem-ui%2Csans-serif%3Bfont-size%3A15px%3Bletter-spacing%3A.2em%3Bcolor%3A%23d7e04f%3Btext-transform%3Auppercase%3Bmargin-bottom%3A16px%7D%0Ah1%7Bfont-size%3A96px%3Bline-height%3A.96%3Bletter-spacing%3A-.015em%3Bfont-weight%3A400%7D%0Ah1+b%7Bcolor%3A%23d7e04f%3Bfont-weight%3A700%7D%0A.byline%7Bposition%3Aabsolute%3Bleft%3A62px%3Bbottom%3A64px%3Bfont-family%3Asystem-ui%2Csans-serif%3Bfont-size%3A16px%3Bcolor%3A%23a9c0a6%7D%0A%3C%2Fstyle%3E%3C%2Fhead%3E%3Cbody%3E%0A%3Cdiv+class%3D%22mast%22%3E%3Cspan+class%3D%22name%22%3EThe+Render%3C%2Fspan%3E%3Cspan+class%3D%22iss%22%3EISSUE+N%C2%BA+12+%C2%B7+FIELD+NOTES%3C%2Fspan%3E%3C%2Fdiv%3E%0A%3Cdiv+class%3D%22cover%22%3E%3Cdiv+class%3D%22over%22%3EEngineering%3C%2Fdiv%3E%0A%3Ch1%3EHow+we+screenshot%3Cbr%3Ethe+%3Cb%3Ewhole+web%3C%2Fb%3E%2C+nightly.%3C%2Fh1%3E%3C%2Fdiv%3E%0A%3Cdiv+class%3D%22byline%22%3EA+working+note+on+scale%2C+caching%2C+and+the+long+tail.%3C%2Fdiv%3E%0A%3C%2Fbody%3E%3C%2Fhtml%3E%0A&width=1200&height=630`
- CaptureDeck email: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?html=%0A%3C%21doctype+html%3E%3Chtml%3E%3Chead%3E%3Cmeta+charset%3D%22utf-8%22%3E%3Cstyle%3E%0A*%7Bmargin%3A0%3Bbox-sizing%3Aborder-box%7D%0Abody%7Bwidth%3A600px%3Bheight%3A800px%3Bbackground%3A%23eef1f8%3Bfont-family%3Asystem-ui%2C-apple-system%2C%22Segoe+UI%22%2Csans-serif%3Bcolor%3A%231a2130%7D%0A.card%7Bmargin%3A0+auto%3Bbackground%3A%23fff%7D%0A.hero%7Bbackground%3Alinear-gradient%28135deg%2C%231e3a8a%2C%234f46e5+55%25%2C%237c3aed%29%3Bpadding%3A52px+48px+46px%3Bcolor%3A%23fff%3Bposition%3Arelative%3Boverflow%3Ahidden%7D%0A.deck%7Bposition%3Aabsolute%3Bright%3A40px%3Btop%3A46px%3Bwidth%3A130px%3Bheight%3A100px%7D%0A.deck+i%7Bposition%3Aabsolute%3Bwidth%3A98px%3Bheight%3A66px%3Bborder-radius%3A11px%3Bborder%3A2px+solid+rgba%28255%2C255%2C255%2C.5%29%3Bbackground%3Argba%28255%2C255%2C255%2C.10%29%7D%0A.deck+i%3Anth-child%281%29%7Bright%3A22px%3Btop%3A28px%3Btransform%3Arotate%28-8deg%29%7D%0A.deck+i%3Anth-child%282%29%7Bright%3A12px%3Btop%3A15px%3Btransform%3Arotate%284deg%29%3Bbackground%3Argba%28255%2C255%2C255%2C.16%29%7D%0A.deck+i%3Anth-child%283%29%7Bright%3A2px%3Btop%3A2px%3Btransform%3Arotate%28-2deg%29%3Bbackground%3Argba%28255%2C255%2C255%2C.28%29%3Bborder-color%3Argba%28255%2C255%2C255%2C.85%29%7D%0A.pill%7Bdisplay%3Ainline-block%3Bbackground%3Argba%28255%2C255%2C255%2C.16%29%3Bborder%3A1px+solid+rgba%28255%2C255%2C255%2C.32%29%3Bpadding%3A6px+13px%3Bborder-radius%3A99px%3Bfont-size%3A12px%3Bfont-weight%3A700%3Bletter-spacing%3A.09em%3Bmargin-bottom%3A22px%3Bposition%3Arelative%7D%0A.hero+h1%7Bfont-size%3A35px%3Bline-height%3A1.09%3Bletter-spacing%3A-.02em%3Bfont-weight%3A850%3Bmax-width%3A12ch%3Bposition%3Arelative%7D%0A.body%7Bpadding%3A38px+48px+8px%7D%0A.body+p%7Bfont-size%3A16px%3Bline-height%3A1.62%3Bcolor%3A%2348505f%3Bmargin-bottom%3A24px%7D%0A.cta%7Bdisplay%3Ainline-block%3Bbackground%3A%234f46e5%3Bcolor%3A%23fff%3Btext-decoration%3Anone%3Bfont-weight%3A700%3Bfont-size%3A16px%3Bpadding%3A15px+30px%3Bborder-radius%3A11px%7D%0A.feat%7Bdisplay%3Aflex%3Bgap%3A14px%3Bpadding%3A32px+48px+40px%7D%0A.feat+div%7Bflex%3A1%7D%0A.feat+.ic%7Bwidth%3A38px%3Bheight%3A38px%3Bborder-radius%3A10px%3Bbackground%3A%23eef0fe%3Bcolor%3A%234f46e5%3Bdisplay%3Aflex%3Balign-items%3Acenter%3Bjustify-content%3Acenter%3Bfont-size%3A19px%3Bfont-weight%3A800%3Bmargin-bottom%3A11px%7D%0A.feat+h4%7Bfont-size%3A14px%3Bmargin-bottom%3A4px%7D.feat+p%7Bfont-size%3A13px%3Bcolor%3A%236a7283%3Bline-height%3A1.42%3Bmargin%3A0%7D%0A.foot%7Bpadding%3A24px+48px+34px%3Bborder-top%3A1px+solid+%23edeff4%3Bcolor%3A%2398a0b0%3Bfont-size%3A12px%3Bline-height%3A1.6%7D%0A%3C%2Fstyle%3E%3C%2Fhead%3E%3Cbody%3E%3Cdiv+class%3D%22card%22%3E%0A%3Cdiv+class%3D%22hero%22%3E%3Cdiv+class%3D%22deck%22%3E%3Ci%3E%3C%2Fi%3E%3Ci%3E%3C%2Fi%3E%3Ci%3E%3C%2Fi%3E%3C%2Fdiv%3E%0A%3Cspan+class%3D%22pill%22%3ECAPTUREDECK%3C%2Fspan%3E%0A%3Ch1%3EScreenshot+the+whole+list+at+once.%3C%2Fh1%3E%3C%2Fdiv%3E%0A%3Cdiv+class%3D%22body%22%3E%3Cp%3EDreading+a+list+of+300+screenshots%3F+Paste+your+URLs+%E2%80%94+up+to+100+at+a+time%2C+or+a+CSV+for+more+%E2%80%94+and+CaptureDeck+captures+every+page+for+you%2C+then+hands+it+all+back+as+one+polished+PDF+report%2C+a+Zip+of+the+images%2C+or+a+CSV+of+links.%3C%2Fp%3E%0A%3Ca+class%3D%22cta%22+href%3D%22%23%22%3ETry+it+free+%E2%86%92%3C%2Fa%3E%3C%2Fdiv%3E%0A%3Cdiv+class%3D%22feat%22%3E%0A+%3Cdiv%3E%3Cdiv+class%3D%22ic%22%3E%E2%96%A4%3C%2Fdiv%3E%3Ch4%3EPDF+report%3C%2Fh4%3E%3Cp%3EEvery+capture%2C+one+document.%3C%2Fp%3E%3C%2Fdiv%3E%0A+%3Cdiv%3E%3Cdiv+class%3D%22ic%22%3E%E2%A4%93%3C%2Fdiv%3E%3Ch4%3EZip+of+images%3C%2Fh4%3E%3Cp%3EDownload+the+lot.%3C%2Fp%3E%3C%2Fdiv%3E%0A+%3Cdiv%3E%3Cdiv+class%3D%22ic%22%3E%E2%98%B0%3C%2Fdiv%3E%3Ch4%3ECSV+of+links%3C%2Fh4%3E%3Cp%3EPipe+them+anywhere.%3C%2Fp%3E%3C%2Fdiv%3E%0A%3C%2Fdiv%3E%0A%3Cdiv+class%3D%22foot%22%3EUrlbox+CaptureDeck+%C2%B7+7-day+free+trial%2C+no+credit+card.%3Cbr%3EManage+email+preferences+%C2%B7+Unsubscribe%3C%2Fdiv%3E%0A%3C%2Fdiv%3E%3C%2Fbody%3E%3C%2Fhtml%3E%0A&width=600&full_page=true`
- Invoice → PDF: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?html=%0A%3C%21doctype+html%3E%3Chtml%3E%3Chead%3E%3Cmeta+charset%3D%22utf-8%22%3E%3Cstyle%3E%0A*%7Bmargin%3A0%3Bbox-sizing%3Aborder-box%7D%0Abody%7Bwidth%3A794px%3Bheight%3A1123px%3Bbackground%3A%23fff%3Bcolor%3A%231e293b%3Bfont-family%3Asystem-ui%2C-apple-system%2Csans-serif%3Bpadding%3A60px+58px%7D%0A.head%7Bdisplay%3Aflex%3Bjustify-content%3Aspace-between%3Balign-items%3Aflex-start%3Bpadding-bottom%3A30px%3Bborder-bottom%3A2px+solid+%231e293b%7D%0A.brand%7Bdisplay%3Aflex%3Bgap%3A12px%3Balign-items%3Acenter%7D.brand+.m%7Bwidth%3A38px%3Bheight%3A38px%3Bbackground%3A%231e40af%3Bborder-radius%3A9px%7D%0A.brand+b%7Bfont-size%3A22px%3Bletter-spacing%3A-.01em%7D%0A.brand+small%7Bdisplay%3Ablock%3Bcolor%3A%2364748b%3Bfont-size%3A12.5px%3Bfont-weight%3A500%3Bmargin-top%3A2px%7D%0A.inv%7Btext-align%3Aright%7D.inv+h1%7Bfont-size%3A30px%3Bletter-spacing%3A.04em%3Bcolor%3A%231e40af%7D%0A.inv+.no%7Bfont-family%3Aui-monospace%2Cmonospace%3Bcolor%3A%2364748b%3Bfont-size%3A13px%3Bmargin-top%3A6px%7D%0A.parties%7Bdisplay%3Aflex%3Bjustify-content%3Aspace-between%3Bmargin%3A34px+0+30px%3Bfont-size%3A13.5px%3Bline-height%3A1.6%7D%0A.parties+.lab%7Bfont-size%3A11px%3Bletter-spacing%3A.12em%3Btext-transform%3Auppercase%3Bcolor%3A%2394a3b8%3Bfont-weight%3A700%3Bmargin-bottom%3A6px%7D%0A.parties+b%7Bfont-size%3A15px%3Bcolor%3A%231e293b%7D%0Atable%7Bwidth%3A100%25%3Bborder-collapse%3Acollapse%3Bfont-size%3A13.5px%7D%0Athead+th%7Btext-align%3Aleft%3Bfont-size%3A11px%3Bletter-spacing%3A.1em%3Btext-transform%3Auppercase%3Bcolor%3A%2394a3b8%3B%0A+padding%3A12px+0%3Bborder-bottom%3A1px+solid+%23e2e8f0%7D%0Athead+th.r%2Ctbody+td.r%7Btext-align%3Aright%3Bfont-variant-numeric%3Atabular-nums%7D%0Atbody+td%7Bpadding%3A16px+0%3Bborder-bottom%3A1px+solid+%23f1f5f9%7D%0Atbody+.d+small%7Bdisplay%3Ablock%3Bcolor%3A%2394a3b8%3Bfont-size%3A12px%3Bmargin-top%3A2px%7D%0A.sum%7Bmargin-left%3Aauto%3Bwidth%3A280px%3Bmargin-top%3A22px%3Bfont-size%3A14px%7D%0A.sum+.r%7Bdisplay%3Aflex%3Bjustify-content%3Aspace-between%3Bpadding%3A8px+0%7D%0A.sum+.r+span%3Alast-child%7Bfont-variant-numeric%3Atabular-nums%7D%0A.sum+.grand%7Bborder-top%3A2px+solid+%231e293b%3Bmargin-top%3A8px%3Bpadding-top%3A14px%3Bfont-size%3A20px%3Bfont-weight%3A800%3Bcolor%3A%231e40af%7D%0A.note%7Bposition%3Aabsolute%3Bleft%3A58px%3Bright%3A58px%3Bbottom%3A58px%3Bfont-size%3A12.5px%3Bcolor%3A%2394a3b8%3Bborder-top%3A1px+solid+%23e2e8f0%3Bpadding-top%3A18px%7D%0A%3C%2Fstyle%3E%3C%2Fhead%3E%3Cbody%3E%0A%3Cdiv+class%3D%22head%22%3E%3Cdiv+class%3D%22brand%22%3E%3Cspan+class%3D%22m%22%3E%3C%2Fspan%3E%3Cdiv%3E%3Cb%3EAcme+Studio%3C%2Fb%3E%3Csmall%3Eacme.example+%C2%B7+hello%40acme.example%3C%2Fsmall%3E%3C%2Fdiv%3E%3C%2Fdiv%3E%0A%3Cdiv+class%3D%22inv%22%3E%3Ch1%3EINVOICE%3C%2Fh1%3E%3Cdiv+class%3D%22no%22%3E%23INV-0001%3Cbr%3EIssued+01+Jan+2026+%C2%B7+Due+15+Jan+2026%3C%2Fdiv%3E%3C%2Fdiv%3E%3C%2Fdiv%3E%0A%3Cdiv+class%3D%22parties%22%3E%3Cdiv%3E%3Cdiv+class%3D%22lab%22%3EBilled+to%3C%2Fdiv%3E%3Cb%3EGlobex+Ltd%3C%2Fb%3E%3Cbr%3E1+Example+Street%3Cbr%3ESampleton%2C+EX1+2AB%3C%2Fdiv%3E%0A%3Cdiv+style%3D%22text-align%3Aright%22%3E%3Cdiv+class%3D%22lab%22%3EPayment%3C%2Fdiv%3EBank+transfer%3Cbr%3ESort+00-00-00+%C2%B7+Acct+0000+0000%3C%2Fdiv%3E%3C%2Fdiv%3E%0A%3Ctable%3E%3Cthead%3E%3Ctr%3E%3Cth%3EDescription%3C%2Fth%3E%3Cth+class%3D%22r%22%3EQty%3C%2Fth%3E%3Cth+class%3D%22r%22%3ERate%3C%2Fth%3E%3Cth+class%3D%22r%22%3EAmount%3C%2Fth%3E%3C%2Ftr%3E%3C%2Fthead%3E%0A%3Ctbody%3E%0A%3Ctr%3E%3Ctd+class%3D%22d%22%3EBrand+identity+system%3Csmall%3ELogo%2C+palette%2C+type%2C+guidelines%3C%2Fsmall%3E%3C%2Ftd%3E%3Ctd+class%3D%22r%22%3E1%3C%2Ftd%3E%3Ctd+class%3D%22r%22%3E%C2%A34%2C200.00%3C%2Ftd%3E%3Ctd+class%3D%22r%22%3E%C2%A34%2C200.00%3C%2Ftd%3E%3C%2Ftr%3E%0A%3Ctr%3E%3Ctd+class%3D%22d%22%3EMarketing+site%3Csmall%3EDesign+%2B+build%2C+6+pages%3C%2Fsmall%3E%3C%2Ftd%3E%3Ctd+class%3D%22r%22%3E1%3C%2Ftd%3E%3Ctd+class%3D%22r%22%3E%C2%A36%2C800.00%3C%2Ftd%3E%3Ctd+class%3D%22r%22%3E%C2%A36%2C800.00%3C%2Ftd%3E%3C%2Ftr%3E%0A%3Ctr%3E%3Ctd+class%3D%22d%22%3EPhotography+direction%3Csmall%3EHalf-day+session%3C%2Fsmall%3E%3C%2Ftd%3E%3Ctd+class%3D%22r%22%3E1%3C%2Ftd%3E%3Ctd+class%3D%22r%22%3E%C2%A3950.00%3C%2Ftd%3E%3Ctd+class%3D%22r%22%3E%C2%A3950.00%3C%2Ftd%3E%3C%2Ftr%3E%0A%3C%2Ftbody%3E%3C%2Ftable%3E%0A%3Cdiv+class%3D%22sum%22%3E%3Cdiv+class%3D%22r%22%3E%3Cspan%3ESubtotal%3C%2Fspan%3E%3Cspan%3E%C2%A311%2C950.00%3C%2Fspan%3E%3C%2Fdiv%3E%0A%3Cdiv+class%3D%22r%22%3E%3Cspan%3EVAT+%2820%25%29%3C%2Fspan%3E%3Cspan%3E%C2%A32%2C390.00%3C%2Fspan%3E%3C%2Fdiv%3E%0A%3Cdiv+class%3D%22r+grand%22%3E%3Cspan%3ETotal%3C%2Fspan%3E%3Cspan%3E%C2%A314%2C340.00%3C%2Fspan%3E%3C%2Fdiv%3E%3C%2Fdiv%3E%0A%3Cdiv+class%3D%22note%22%3EThank+you+for+your+business.+Payment+due+within+14+days.+Late+payments+accrue+2%25+monthly+interest+under+the+Late+Payment+of+Commercial+Debts+Act.%3C%2Fdiv%3E%0A%3C%2Fbody%3E%3C%2Fhtml%3E%0A&width=794&format=pdf`
- Stat card (rotates): `https://api.urlbox.com/v1/YOUR_API_KEY/webp?html=%0A%3C%21doctype+html%3E%3Chtml%3E%3Chead%3E%3Cmeta+charset%3D%22utf-8%22%3E%3Cstyle%3E%0A*%7Bmargin%3A0%3Bbox-sizing%3Aborder-box%7D%0Abody%7Bwidth%3A1080px%3Bheight%3A1080px%3Bbackground%3A%235b21b6%3Bcolor%3A%23f5f3ff%3Bfont-family%3AGeorgia%2C%22Times+New+Roman%22%2Cserif%3B%0A+padding%3A110px+100px%3Bposition%3Arelative%3Boverflow%3Ahidden%7D%0A.q%7Bposition%3Aabsolute%3Btop%3A20px%3Bleft%3A70px%3Bfont-size%3A420px%3Bline-height%3A1%3Bcolor%3A%237c3aed%3Bfont-family%3AGeorgia%2Cserif%7D%0Ablockquote%7Bposition%3Arelative%3Bfont-size%3A66px%3Bline-height%3A1.22%3Bfont-weight%3A500%3Bletter-spacing%3A-.01em%3Bmargin%3A120px+0+0%3Bmax-width%3A15ch%7D%0Ablockquote+b%7Bcolor%3A%23c4b5fd%7D%0A.who%7Bposition%3Aabsolute%3Bleft%3A100px%3Bbottom%3A110px%3Bdisplay%3Aflex%3Balign-items%3Acenter%3Bgap%3A20px%3Bfont-family%3Asystem-ui%2Csans-serif%7D%0A.who+.av%7Bwidth%3A66px%3Bheight%3A66px%3Bborder-radius%3A50%25%3Bbackground%3Alinear-gradient%28135deg%2C%23a78bfa%2C%23f0abfc%29%3B%0A+display%3Aflex%3Balign-items%3Acenter%3Bjustify-content%3Acenter%3Bfont-weight%3A800%3Bcolor%3A%234c1d95%3Bfont-size%3A24px%7D%0A.who+.n%7Bfont-size%3A22px%3Bfont-weight%3A700%7D.who+.r%7Bfont-size%3A16px%3Bcolor%3A%23c4b5fd%7D%0A%3C%2Fstyle%3E%3C%2Fhead%3E%3Cbody%3E%0A%3Cdiv+class%3D%22q%22%3E%26ldquo%3B%3C%2Fdiv%3E%0A%3Cblockquote%3EWe+replaced+a+fragile+screenshot+cron+with+%3Cb%3Eone+API+call%3C%2Fb%3E+%E2%80%94+and+never+thought+about+it+again.%3C%2Fblockquote%3E%0A%3Cdiv+class%3D%22who%22%3E%3Cspan+class%3D%22av%22%3ERL%3C%2Fspan%3E%3Cdiv%3E%3Cdiv+class%3D%22n%22%3ERebecca+Lang%3C%2Fdiv%3E%3Cdiv+class%3D%22r%22%3EStaff+Engineer%2C+Fathom%3C%2Fdiv%3E%3C%2Fdiv%3E%3C%2Fdiv%3E%0A%3C%2Fbody%3E%3C%2Fhtml%3E%0A&width=1080&height=1080`

### format

- **Type:** enum
- **Default:** —
- **Accepts:** png · jpeg · webp · avif · svg · pdf · html · mp4 · webm · md

The output format of the resulting render.

Examples:
- PNG Image: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=example.com`
- JPEG Image: `https://api.urlbox.com/v1/YOUR_API_KEY/jpeg?url=example.com&format=jpeg`
- PDF: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=example.com&format=pdf`
- SVG: `https://api.urlbox.com/v1/YOUR_API_KEY/svg?url=example.com&format=svg`
- Markdown: `https://api.urlbox.com/v1/YOUR_API_KEY/md?url=example.com&format=md`
- HTML: `https://api.urlbox.com/v1/YOUR_API_KEY/html?url=example.com&format=html`
- MP4: `https://api.urlbox.com/v1/YOUR_API_KEY/mp4?url=example.com&format=mp4`

### width

- **Type:** number
- **Default:** 1280
- **Accepts:** number

The viewport width of the browser, in pixels.

Examples:
- Emulate mobile viewport: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=apple.com&width=375`
- Emulate tablet viewport: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=apple.com&width=768`
- Emulate desktop viewport: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=apple.com&width=1280`
- Emulate wide monitor viewport: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=apple.com&width=2000`

### height

- **Type:** number
- **Default:** 1024
- **Accepts:** number

The viewport height of the browser, in pixels.

Examples:
- Emulate Iphone 14 Pro Max Viewport Height: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=apple.com&height=932`
- Emulate Ipad Pro 12.9 Inch Pro Viewport Height: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=apple.com&height=1366`
- Emulate Macbook Pro 16 Inch Viewport Height: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=apple.com&height=960`
- Emulate Common Desktop Screen Viewport Height: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=apple.com&height=1080`

### full_page

- **Type:** boolean
- **Default:** false
- **Accepts:** true · false

Specify whether to capture the full scrollable area of the website. For PDFs, full_page mode will attempt to capture the whole website onto one single page PDF document. It's likely you'll want to also hide any cookie banners that crop up during a full page screenshot, so we recommend you use click_accept and hide_cookie_banners too.

Examples:
- Full page screenshot of urlbox.com: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&full_page=true`
- Full page PDF of urlbox.com: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=urlbox.com&full_page=true&format=pdf&pdf_auto_crop=true`

### selector

- **Type:** string
- **Default:** —
- **Accepts:** string

Take a screenshot of the element that matches this selector. By default, if the selector is not found, Urlbox will take a normal viewport screenshot. If you prefer Urlbox to fail the request when the selector is not found, pass fail_if_selector_missing=true.

Examples:
- Select only the Github logo: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=github.com&selector=.octicon-mark-github`
- Snapshotting terms and conditions: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=https%3A%2F%2Furlbox.com%2Fpolicies%2Fterms&selector=section`

### clip

- **Type:** string
- **Default:** —
- **Accepts:** string

Clip the screenshot to the bounding box specified by x,y,width,height.

Examples:
- clip=0,0,400,400: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&clip=0%2C0%2C400%2C400`
- clip=100,100,200,200: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&clip=100%2C100%2C200%2C200`
- clip=0,800,800,600: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&clip=0%2C800%2C800%2C600`

### gpu

- **Type:** boolean
- **Default:** false
- **Accepts:** true · false

Enable GPU acceleration to render 3D scenes and heavy WebGL content. This is a beta feature and requires pre-approval. Please contact support@urlbox.com to enable this feature on your account. Requires the Ultra plan or above.

Examples:
- WebGL water: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?gpu=true&url=https%3A%2F%2Fmadebyevan.com%2Fwebgl-water%2F&wait_for=canvas`
- WebGL Earth: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?gpu=true&url=https%3A%2F%2Fjsulpis.github.io%2Frealtime-planet-shader%2Fearth%2F&wait_for=canvas.loaded`
- LLM 3D Visualisation: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?gpu=true&url=https%3A%2F%2Fbbycroft.net%2Fllm`

### response_type

- **Type:** enum
- **Default:** —
- **Accepts:** json · binary

For render link requests, setting this option to json will change the response type of the Urlbox request to JSON. For the API, the default response type is JSON.

Examples:
- response_type=json: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=example.com&response_type=json`
- response_type=binary: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=example.com&response_type=binary`

### secure_mode

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Ensure that sensitive data remains protected throughout the process. In addition to this option, you need to use one of the storage approaches described on our blog post about secure mode. Requires the Ultra plan or above.

## Blocking Options

Options for blocking or dismissing certain page elements, such as cookie banners.

### block_ads

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Blocks requests from popular advertising networks from loading.

Examples:
- With ads blocked: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=nytimes.com&block_ads=true`
- Without ads blocked: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=nytimes.com&block_ads=false`

### hide_cookie_banners

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Automatically hides cookie banners from most websites, by setting their style to display: none !important;

Examples:
- With cookie banners hidden: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=vectary.com&hide_cookie_banners=true`
- Without cookie banners hidden: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=vectary.com`

### click_accept

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Similar to the hide_cookie_banners option, but instead of hiding the banners, this option attempts to click on the 'Accept' button, in order to accept cookies.

Examples:
- With click_accept: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=vectary.com&click_accept=true`
- Without click_accept: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=vectary.com`

### press_escape

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Attempts to press the Escape (ESC) key before capturing the page. Useful for dismissing pop-ups, overlays, or advertising banners that appear on load.

### block_urls

- **Type:** array
- **Default:** —
- **Accepts:** string[]

Block requests from specific domains from loading. You can use wildcard characters such as * to match subdomains.

Examples:
- Blocking chat plugin from Urlbox: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&block_urls=*crisp*`
- Without blocking chat plugin from Urlbox: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&delay=2000&click_accept=true`

### block_images

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Blocks image requests

Examples:
- Blocking all images from Unsplash: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=https%3A%2F%2Funsplash.com%2F&click_accept=true&block_images=true`

### block_fonts

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Blocks font requests

Examples:
- Blocking all font downloads from Urlbox: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&block_fonts=true`
- Without blocking font downloads from Urlbox: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com`

### block_medias

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Block video and audio requests

Examples:
- Blocking video and audio requests from Vimeo: `https://api.urlbox.com/v1/YOUR_API_KEY/mp4?block_medias=true&format=mp4&url=https%3A%2F%2Fvimeo.com%2F`
- Without blocking video and audio requests from Vimeo: `https://api.urlbox.com/v1/YOUR_API_KEY/mp4?url=https%3A%2F%2Fvimeo.com%2F&format=mp4`

### block_styles

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Prevent stylesheet requests from loading

Examples:
- Blocking stylesheets: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=https%3A%2F%2Fnews.ycombinator.com%2F&block_styles=true`
- Without blocking stylesheets: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=https%3A%2F%2Fnews.ycombinator.com%2F`

### block_scripts

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Prevent requests for javascript scripts from loading

Examples:
- Blocking scripts: `https://api.urlbox.com/v1/YOUR_API_KEY/mp4?url=https%3A%2F%2Fwww.apple.com%2Fuk%2Fiphone-16-pro%2F&format=mp4&block_scripts=true`
- Without blocking scripts: `https://api.urlbox.com/v1/YOUR_API_KEY/mp4?url=https%3A%2F%2Fwww.apple.com%2Fuk%2Fiphone-16-pro%2F&format=mp4`

### block_frames

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Prevents iframe and frame content from loading by blocking non-navigation document requests. The main page will load normally, but any embedded frames/iframes will be blocked.

Examples:
- Blocking frames: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=https%3A%2F%2Fwww.nytimes.com&block_frames=true`

### block_fetch

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Block fetch requests from the target URL.

### block_xhr

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Block XHR requests from the target URL.

Examples:
- Blocking XHR: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=https%3A%2F%2Fwww.gumtree.com%2F&block_xhr=true`

### block_sockets

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Prevents WebSocket connections from being established, blocking real-time communication features like live chat, notifications, or dynamic updates.

### block_data_urls

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Block data URLs such as data:image/png;base64,...

### hide_selector

- **Type:** string
- **Default:** —
- **Accepts:** string

Hide specific HTML elements on the page before rendering. This option accepts a comma-delimited string of CSS element selectors that will be hidden by setting their style to visibility: hidden !important; pointer-events: none !important;. This preserves the page layout while making elements invisible. This is particularly useful for: - Hiding pop-ups, banners, or cookie notices - Removing advertisements or promotional overlays - Excluding navigation menus or sidebars - Hiding specific content sections **Selector types supported:** - **Element selectors** (e.g., h1, div, img) - Hide all elements of that type - **Class selectors** (e.g., .popup, .banner) - Hide elements with specific CSS classes - **ID selectors** (e.g., #header, #sidebar) - Hide elements with specific IDs - **Complex selectors** (e.g., .nav ul li, div.content > p) - Use any valid CSS selector - **Multiple selectors** - Combine multiple selectors with commas **Tip:** To find the selector for any element, open your browser's DevTools, right-click the element in the Elements tab, and select "Copy > Copy selector".

Examples:
- Hiding an h1 element: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&hide_selector=h1`
- Without hiding any elements: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com`

### solve_captchas

- **Type:** boolean
- **Default:** false
- **Accepts:** true · false

Solve captcha widgets on the page (reCAPTCHA v2/v3, hCaptcha, an embedded Cloudflare Turnstile) with a captcha-solving service before rendering. **Pricing:** each successful captcha solve on Urlbox's keys costs 3 renders, on top of the render's normal cost. The seconds spent waiting for that solve are not also charged as render time. Solves with your own provider key (captcha_provider + captcha_api_key) are free. A failed solve is free, and so is a solve on an attempt that didn't produce your render (for example, an attempt that was still blocked and was retried). The attempts summary on the render result shows which attempt solved a captcha and the renders it was billed. Captcha solving is enabled per account. Contact support to turn it on.

### solve_challenges

- **Type:** boolean
- **Default:** false
- **Accepts:** true · false

When waiting does not clear a full-page Cloudflare challenge, solve its Turnstile with a captcha-solving service. Needs the same account feature as solve_captchas. **Pricing:** the same as solve_captchas: each successful solve on Urlbox's keys costs 3 renders, and solves with your own provider key are free. Time spent waiting for the challenge itself is charged as render time, as usual.

### captcha_provider

- **Type:** enum
- **Default:** auto
- **Accepts:** auto · 2captcha · capsolver · anticaptcha

Which captcha-solving service solve_captchas and solve_challenges use. auto uses Urlbox's own accounts. Must name a provider when captcha_api_key is set.

### captcha_api_key

- **Type:** string
- **Default:** —
- **Accepts:** string

Your own API key for the service named in captcha_provider. Solves made with your key are billed to you by that provider and cost no extra renders.

## Customize Options

Customize the look of the page before rendering a screenshot

### js

- **Type:** string
- **Default:** —
- **Accepts:** string

Execute custom JavaScript in the context of the page. The JS gets executed after the page's dom has loaded, but before the screenshot is taken. No need to use load etc event handlers to run code, as these events will already have fired by the time this JS gets executed. You can use await to wait for promises to resolve. Requires the Ultra plan or above.

Examples:
- Inject a timestamp of the screenshot into the screenshot: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&js=var+now+%3D+new+Date%28%29%3B%0A++++++++++++++++++++++var+dateTimeDiv+%3D+document.createElement%28%22div%22%29%3B%0A++++++++++++++++++++++dateTimeDiv.innerText+%3D+now.toLocaleString%28%29%3B%0A++++++++++++++++++++++dateTimeDiv.style.cssText+%3D+%22position%3A+absolute%3B+top%3A+10px%3B+right%3A+10px%3B+padding%3A+10px%3B+background-color%3A+lightgray%3B+border%3A+2px+solid+black%3B+font-weight%3Asemibold%3B+font-family%3A+Arial%2C+sans-serif%3B+font-size%3A+24px%3B+z-index%3A+1000%3B%22%3B%0A++++++++++++++++++++++document.body.appendChild%28dateTimeDiv%29%3B`
- Overriding a headline: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&js=document.querySelector%28%22h1%22%29.textContent+%3D+%22I+just+overrode+the+headline%2C+oops%21%21%22%3B`

### css

- **Type:** string
- **Default:** —
- **Accepts:** string

Inject custom CSS into the page

Examples:
- Highlight elements with a red border: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&css=a+%7Bborder%3A+4px+solid+red+%21important%3B+padding%3A+4px%3B%7D`
- Changing background colour: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&css=header%2Cmain%2C+main+%3E+section+%3E+div+%7Bbackground-color%3A+cyan+%21important%3B%7D`

### dark_mode

- **Type:** boolean
- **Default:** false
- **Accepts:** true · false

Emulate dark mode on websites by setting prefers-color-scheme: dark

Examples:
- dark_mode=true: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com%2Fdocs%2Fapi&dark_mode=true`
- dark_mode=false: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com%2Fdocs%2Fapi&dark_mode=false`

### reduced_motion

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Prefer less animations on websites by setting prefers-reduced-motion: reduced

Examples:
- With reduced motion: `https://api.urlbox.com/v1/YOUR_API_KEY/mp4?url=https%3A%2F%2Fwebkit.org%2Fblog-files%2Fprefers-reduced-motion%2Fprm.htm&format=mp4&reduced_motion=true`
- Without reduced motion: `https://api.urlbox.com/v1/YOUR_API_KEY/mp4?url=https%3A%2F%2Fwebkit.org%2Fblog-files%2Fprefers-reduced-motion%2Fprm.htm&format=mp4`

### show_timestamp

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Shows a timestamp in a header above the rendered screenshot. Can be paired with show URL. If you're rendering a PDF, you can achieve this with the show_header option.

Examples:
- With a timestamp: `https://api.urlbox.com/v1/YOUR_API_KEY/png?url=https%3A%2F%2Fexample.com&format=png&show_timestamp=true`
- Without a timestamp: `https://api.urlbox.com/v1/YOUR_API_KEY/png?url=https%3A%2F%2Fexample.com&format=png`

### show_url

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Shows a URL in a header above the rendered screenshot. Can be paired with show timestamp. If you're rendering a PDF, you can achieve this with the show_header option.

Examples:
- With a URL: `https://api.urlbox.com/v1/YOUR_API_KEY/png?url=https%3A%2F%2Fexample.com&format=png&show_url=true`
- With a timestamp and URL: `https://api.urlbox.com/v1/YOUR_API_KEY/png?url=https%3A%2F%2Fexample.com&format=png&show_timestamp=true&show_url=true`
- Without a URL: `https://api.urlbox.com/v1/YOUR_API_KEY/png?url=https%3A%2F%2Fexample.com&format=png`

## Screenshot Options

Options relating to the generated screenshot image

### retina

- **Type:** boolean
- **Default:** false
- **Accepts:** true · false

Take a 'retina' or high-definition screenshot, equivalent to setting a device pixel ratio of 2.0 or @2x. Please note that retina screenshots will be double the normal dimensions and will normally take slightly longer to process due to the much bigger image size.

Examples:
- retina=true: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&retina=true`
- retina=false: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&retina=false`

### thumb_width

- **Type:** number
- **Default:** —
- **Accepts:** number

The width of the generated thumbnail, in pixels. Omit for a full-size screenshot.

Examples:
- thumb_width=100: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=example.com&thumb_width=100`
- thumb_width=200: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=example.com&thumb_width=200`
- thumb_width=400: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=example.com&thumb_width=400`

### thumb_height

- **Type:** number
- **Default:** —
- **Accepts:** number

The height of the generated thumbnail, in pixels. Omit for a full-size screenshot.

Examples:
- thumb_height=100: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=example.com&thumb_height=100`
- thumb_height=200: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=example.com&thumb_height=200`
- thumb_height=400: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=example.com&thumb_height=400`

### thumbnails

- **Type:** array
- **Default:** —
- **Accepts:** array

Generate up to 5 additional thumbnail images from the same render, each uploaded as its own file alongside the main screenshot. thumbnails is independent of the main screenshot's own dimensions, and unrelated to the legacy thumb_width/thumb_height options above, which resize the primary screenshot itself. Each entry in the array is an object with the following keys, all optional: - key — a short identifier (max 10 characters) for this thumbnail. Used as its filename suffix, and as its key in the JSON response. - preset — one of xs, sm, md, lg, xl, 2xl, 3xl, 4xl, 5xl, 1/2, 1/4, 3/4. Scales the thumbnail as a percentage of the original screenshot (e.g. md is 30%). Takes priority over size/width/height. - size — a single pixel value (10–2000) used as both width and height. - width / height — the thumbnail dimensions in pixels (10–2000). - fit — how the thumbnail is resized/cropped: cover, contain, fill, inside or outside. Falls back to img_fit, then cover. - bg — background colour used for letterboxing. Falls back to img_bg, then bg_color, then black. - position — how the image is positioned within its fit. Any img_position value, including attention and entropy. Falls back to img_position, then north. - suffix — a custom filename suffix, used when key isn't set. - presigned_url — a presigned URL to upload this specific thumbnail to, instead of Urlbox's own storage. Each generated thumbnail appears in the JSON response (see response_type) as an entry in a thumbnails array, each with a key, location and size.

Examples:
- Generate two thumbnails alongside the render: `https://api.urlbox.com/v1/YOUR_API_KEY/png?url=urlbox.com&format=png&thumbnails%5B0%5D%5Bsize%5D=120&thumbnails%5B0%5D%5Bkey%5D=icon&thumbnails%5B1%5D%5Bwidth%5D=320&thumbnails%5B1%5D%5Bkey%5D=card`

### thumbnails_object

- **Type:** boolean
- **Default:** false
- **Accepts:** true · false

When true, the generated thumbnails are returned in the JSON response as an object keyed by each thumbnail's key/suffix (with key omitted from each value) instead of an array — so you can look a thumbnail up by name rather than by position.

### img_fit

- **Type:** enum
- **Default:** cover
- **Accepts:** cover · contain · fill · inside · outside

How the screenshot should be resized or cropped to fit the dimensions when using thumb_width and/or thumb_height options Values: cover — Preserving aspect ratio, attempt to ensure the image covers both thumb_width and/or thumb_height by cropping/clipping to fit.; contain — Preserving aspect ratio, contain within both thumb_width and/or thumb_height using letterboxing where necessary.; fill — Ignore the aspect ratio and stretch to both thumb_width and/or thumb_height.; inside — Preserving aspect ratio, resize the image to be as large as possible while ensuring its dimensions are less than or equal to thumb_width and/or thumb_height.; outside — Preserving aspect ratio, resize the image to be as small as possible while ensuring its dimensions are greater than or equal to thumb_width and/or thumb_height..

Examples:
- img_fit=cover: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&thumb_width=400&thumb_height=400&img_fit=cover`
- img_fit=contain: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&thumb_width=400&thumb_height=400&img_fit=contain`
- img_fit=fill: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&thumb_width=400&thumb_height=400&img_fit=fill`
- img_fit=inside: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&thumb_width=400&thumb_height=400&img_fit=inside`
- img_fit=outside: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&thumb_width=400&thumb_height=400&img_fit=outside`

### img_position

- **Type:** enum
- **Default:** center
- **Accepts:** north · northeast · east · southeast · south · southwest · west · northwest · center · centre

How the image should be positioned when using an img_fit of cover or contain.

Examples:
- img_position=north: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&thumb_width=400&thumb_height=400&img_position=north`
- img_position=south: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&thumb_width=400&thumb_height=400&img_position=south`
- img_position=west: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&thumb_width=400&thumb_height=400&img_position=west`
- img_position=east: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&thumb_width=400&thumb_height=400&img_position=east`
- img_position=center: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&thumb_width=400&thumb_height=400&img_position=center`
- img_position=northwest: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&thumb_width=400&thumb_height=400&img_position=northwest`
- img_fit=contain, img_position=north: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&thumb_width=400&thumb_height=400&img_fit=contain&img_position=north`
- img_fit=contain, img_position=south: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&thumb_width=400&thumb_height=400&img_fit=contain&img_position=south`
- img_fit=contain, img_position=west: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&thumb_width=400&thumb_height=400&img_fit=contain&img_position=west`
- img_fit=contain, img_position=east: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&thumb_width=400&thumb_height=400&img_fit=contain&img_position=east`
- img_fit=contain, img_position=center: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&thumb_width=400&thumb_height=400&img_fit=contain&img_position=center`
- img_fit=contain, img_position=northwest: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&thumb_width=400&thumb_height=400&img_fit=contain&img_position=northwest`

### img_bg

- **Type:** string
- **Default:** —
- **Accepts:** string

Background colour to use when img_fit is contain, or img_pad is used, defaults to black without transparency

Examples:
- img_bg=red: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&thumb_width=400&thumb_height=400&img_fit=contain&img_bg=red`
- img_bg=#ccc: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&thumb_width=400&thumb_height=400&img_fit=contain&img_bg=%23ccc`
- img_bg=rgb(180, 255, 200): `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&thumb_width=400&thumb_height=400&img_fit=contain&img_bg=rgb%28180%2C+255%2C+200%29`
- img_bg=rgba(180, 255, 200, 0.4): `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&thumb_width=400&thumb_height=400&img_fit=contain&img_bg=rgba%28180%2C+255%2C+200%2C+0.4%29`
- img_bg=hsl(60, 20%, 20%): `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&thumb_width=400&thumb_height=400&img_fit=contain&img_bg=hsl%2860%2C+20%25%2C+20%25%29`

### img_pad

- **Type:** string
- **Default:** —
- **Accepts:** string

Pad the screenshot, giving it a border. Can either be a single pixel value that gets added to each side, or a comma delimited string of top,right,bottom,left pixel values.

Examples:
- img_pad=10: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&thumb_width=400&thumb_height=400&img_bg=cyan&img_pad=10`
- img_pad=30: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&thumb_width=400&thumb_height=400&img_bg=cyan&img_pad=30`
- img_pad=1,10,20,40: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&thumb_width=400&thumb_height=400&img_bg=cyan&img_pad=1%2C10%2C20%2C40`

### quality

- **Type:** number
- **Default:** 80
- **Accepts:** 0-100

The image quality of the resulting screenshot (JPEG/WebP only) Range: 0-100.

Examples:
- quality=40: `https://api.urlbox.com/v1/YOUR_API_KEY/jpeg?url=spotify.com&format=jpeg&quality=40`
- quality=80: `https://api.urlbox.com/v1/YOUR_API_KEY/jpeg?url=spotify.com&format=jpeg&quality=80`
- quality=100: `https://api.urlbox.com/v1/YOUR_API_KEY/jpeg?url=spotify.com&format=jpeg&quality=100`

### transparent

- **Type:** boolean
- **Default:** false
- **Accepts:** true · false

If a website has no background color set, the image will have a transparent background (PNG/WebP only)

### max_height

- **Type:** number
- **Default:** —
- **Accepts:** number

For extremely lengthy websites, it may be preferable to limit the screenshot to a maximum height to prevent Urlbox from spending time scrolling and generating an enormous screenshot.

Examples:
- Short Website: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&max_height=2098&full_page=true`

### download

- **Type:** string
- **Default:** —
- **Accepts:** string

Pass in a filename which sets the content-disposition header on the response. E.g. download=myfilename.png This will make the Urlbox link downloadable, and will prompt the user to save the file as myfilename.png

Examples:
- With a filename: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=apple.com&download=apple.png`

## PDF Options

Options relating to PDF document generation.

### pdf_page_size

- **Type:** enum
- **Default:** A4
- **Accepts:** A0 · A1 · A2 · A3 · A4 · A5 · A6 · Legal · Letter · Ledger · Tabloid

Sets the PDF page size. Setting this option will take precedence over pdf_page_width and pdf_page_height.

Examples:
- pdf_page_size=A0: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?format=pdf&url=example.com&pdf_page_size=A0`
- pdf_page_size=A4: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?format=pdf&url=example.com&pdf_page_size=A4`
- pdf_page_size=Letter: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?format=pdf&url=example.com&pdf_page_size=Letter`

### pdf_page_range

- **Type:** string
- **Default:** —
- **Accepts:** string

Sets the PDF page range to return. By default, the page is split into a multi page document and returns all page. Use this option to restrict which pages should be returned.

Examples:
- Just the first page: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?format=pdf&url=urlbox.com&pdf_page_range=1`
- The first 2 pages and the 4th page: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?format=pdf&url=urlbox.com&pdf_page_range=1-2%2C4`
- Just the 4th page: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?format=pdf&url=urlbox.com&pdf_page_range=4`

### pdf_page_width

- **Type:** number
- **Default:** —
- **Accepts:** number

Sets the PDF page width, in pixels.

Examples:
- pdf_page_width=400: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=urlbox.com&format=pdf&pdf_page_width=400`
- pdf_page_width=800: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=urlbox.com&format=pdf&pdf_page_width=800`
- pdf_page_width=1400: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=urlbox.com&format=pdf&pdf_page_width=1400`

### pdf_page_height

- **Type:** number
- **Default:** —
- **Accepts:** number

Sets the PDF page height, in pixels.

Examples:
- pdf_page_height=400: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=urlbox.com&format=pdf&pdf_page_height=400`
- pdf_page_height=800: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=urlbox.com&format=pdf&pdf_page_height=800`
- pdf_page_height=2000: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=urlbox.com&format=pdf&pdf_page_height=2000`

### pdf_margin

- **Type:** enum
- **Default:** none
- **Accepts:** none · default · minimum

Sets the margin of the PDF document.

Examples:
- pdf_margin=none: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=example.com&format=pdf&pdf_margin=none`
- pdf_margin=default: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=example.com&format=pdf&pdf_margin=default`
- pdf_margin=minimum: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=example.com&format=pdf&pdf_margin=minimum`

### pdf_margin_top

- **Type:** number
- **Default:** —
- **Accepts:** number

Sets a custom top margin on the PDF.

Examples:
- pdf_margin_top=40: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=example.com&format=pdf&pdf_margin_top=40`

### pdf_margin_right

- **Type:** number
- **Default:** —
- **Accepts:** number

Sets a custom right margin on the PDF.

Examples:
- pdf_margin_right=100: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=example.com&format=pdf&pdf_margin_right=100`

### pdf_margin_bottom

- **Type:** number
- **Default:** —
- **Accepts:** number

Sets a custom bottom margin on the PDF.

Examples:
- pdf_margin_bottom=50: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=example.com&format=pdf&pdf_margin_bottom=50`

### pdf_margin_left

- **Type:** number
- **Default:** —
- **Accepts:** number

Set a custom left margin on the PDF.

Examples:
- pdf_margin_left=60: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=example.com&format=pdf&pdf_margin_left=60`

### pdf_auto_crop

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Automatically remove white space from PDF. Occasionally a PDF will have a lot of trailing white space at the bottom of the page. This option will attempt to automatically crop the PDF to remove this white space.

### pdf_scale

- **Type:** number
- **Default:** 1
- **Accepts:** 0.1 - 2

Sets the scale factor of the website content in the PDF. Valid values are numbers between 0.1 and 2. Range: 0.1 - 2.

Examples:
- pdf_scale=0.2: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=example.com&format=pdf&pdf_scale=0.2`
- pdf_scale=1.2: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=example.com&format=pdf&pdf_scale=1.2`
- pdf_scale=2: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=example.com&format=pdf&pdf_scale=2`

### pdf_orientation

- **Type:** enum
- **Default:** portrait
- **Accepts:** portrait · landscape

Sets the orientation of the PDF.

Examples:
- pdf_orientation=portrait: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=example.com&format=pdf&pdf_orientation=portrait`
- pdf_orientation=landscape: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=example.com&format=pdf&pdf_orientation=landscape`

### pdf_background

- **Type:** boolean
- **Default:** true
- **Accepts:** true · false

Sets whether to print background images in the PDF

Examples:
- pdf_background=true: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=bbc.com&format=pdf&pdf_background=true`
- pdf_background=false: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=bbc.com&format=pdf&pdf_background=false`

### disable_ligatures

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Prevents ligatures from being used. Useful when rendering a PDF, and you want to extract text which contains ligatures.

### media

- **Type:** string
- **Default:** —
- **Accepts:** enum

By default, when generating a PDF, the print CSS media query is used. To generate a PDF using the screen CSS, set this option to screen. When generating an image, the screen CSS media query is used by default. To generate an image using the print CSS, set this option to print.

Examples:
- PDF using screen CSS: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=https%3A%2F%2Ftheconversation.com%2Fwildfires-dont-just-burn-farmland-they-can-contaminate-the-water-farmers-use-to-irrigate-crops-and-support-livestock-236545&format=pdf&media=screen`
- PDF using print CSS: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=https%3A%2F%2Ftheconversation.com%2Fwildfires-dont-just-burn-farmland-they-can-contaminate-the-water-farmers-use-to-irrigate-crops-and-support-livestock-236545&format=pdf&media=print`
- PNG using screen CSS: `https://api.urlbox.com/v1/YOUR_API_KEY/png?url=https%3A%2F%2Ftheconversation.com%2Fwildfires-dont-just-burn-farmland-they-can-contaminate-the-water-farmers-use-to-irrigate-crops-and-support-livestock-236545&format=png&media=screen`
- PNG using print CSS: `https://api.urlbox.com/v1/YOUR_API_KEY/png?url=https%3A%2F%2Ftheconversation.com%2Fwildfires-dont-just-burn-farmland-they-can-contaminate-the-water-farmers-use-to-irrigate-crops-and-support-livestock-236545&format=png&media=print`

### pdf_show_header

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Whether to show the default pdf header on each page of the pdf. The template of the header can be changed by setting the pdf_header option.

Examples:
- pdf_show_header=true: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=example.com&format=pdf&pdf_show_header=true`

### pdf_header

- **Type:** string
- **Default:** —
- **Accepts:** string

Change the default pdf header that is shown on each page of the pdf when pdf_show_header option is set. You have the option to show the following variables in the header (or footer) of the pdf: * current date * title of the page * url of the page * current pageNumber * the totalPages in the pdf document You can display these variables by creating empty divs or spans, with special css class names relating to the variable you want to show. For example, if you want to show the date followed by the url, you could use the following pdf header template: <div class="date"></div><div class="url"></div>. The pdf header template you set are inserted as the innerHTML of a parent div which is a flex container, and has align-items set to flex-start. There are also some helper classes for aligning the divs or spans. The following classes are available: * left - adds some left padding to the element and sets flex: none. * center - aligns the element and text to the center. * right - adds some right padding to the element and sets flex: none. * text - sets the text to 8pt. * grow - sets flex: auto on the element, allowing it to grow to fill the available space. The default pdf header is: <div class='date text left'></div><div class='title text center'></div>. You can see exactly how the pdf page is constructed by looking at the chromium pdf template in the chromium source repository.

Examples:
- Showing the date and url in the pdf header: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=urlbox.com&format=pdf&pdf_show_header=true&pdf_header=%3Cdiv+class%3D%27date+text+left%27%3E%3C%2Fdiv%3E%3Cdiv+class%3D%27url+text+right%27%3E%3C%2Fdiv%3E`
- Showing the current page and total pages in the pdf header: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=urlbox.com&format=pdf&pdf_show_header=true&pdf_header=%3Cdiv+class%3D%27%27+style%3D%27color%3Ared%3Bmargin-right%3A2px%3B%27%3EThis+is+page%3C%2Fdiv%3E%3Cdiv+class%3D%27pageNumber+text%27%3E%3C%2Fdiv%3E%3Cdiv+class%3D%27text%27+style%3D%27color%3Ared%3Bmargin-right%3A2px%3Bmargin-left%3A2px%3B%27%3E+of+%3C%2Fdiv%3E%3Cdiv+class%3D%27totalPages+text%27%3E%3C%2Fdiv%3E`

### pdf_show_footer

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Whether to show the default pdf footer on each page of the pdf. The template of the footer can be changed by setting the pdf_footer option.

Examples:
- pdf_show_footer=true: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=example.com&format=pdf&pdf_show_footer=true`

### pdf_footer

- **Type:** string
- **Default:** —
- **Accepts:** string

Change the default pdf footer that is shown on each page of the pdf when pdf_show_footer option is set. You have the option to show the following variables in the footer (or header) of the pdf: * current date * title of the page * url of the page * current pageNumber * the totalPages in the pdf document You can display these variables by creating empty divs or spans, with special css class names relating to the variable you want to show. For example, if you want to show the date followed by the url, you could use the following pdf footer template: <div class="date"></div><div class="url"></div>. The pdf footer template you set are inserted as the innerHTML of a parent div which is a flex container, and has align-items set to flex-end. There are also some helper classes for aligning the divs or spans. The following classes are available: * left - adds some left padding to the element and sets flex: none. * center - aligns the element and text to the center. * right - adds some right padding to the element and sets flex: none. * text - sets the text to 8pt. * grow - sets flex: auto on the element, allowing it to grow to fill the available space. The default pdf footer is: <div class='url text left grow'></div><div class='text right'><span class='pageNumber'></span>/<span class='totalPages'></span></div>. You can see exactly how the pdf page is constructed by looking at the chromium pdf template in the chromium source repository.

Examples:
- Showing the date and url in the pdf footer.: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=urlbox.com&format=pdf&pdf_show_footer=true&pdf_footer=%3Cdiv+class%3D%27date+text+left%27%3E%3C%2Fdiv%3E%3Cdiv+class%3D%27url+text+right%27%3E%3C%2Fdiv%3E`
- Showing the current page and total pages in the pdf footer.: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=urlbox.com&format=pdf&pdf_show_footer=true&pdf_footer=%3Cdiv+class%3D%27%27+style%3D%27color%3Ared%3Bmargin-right%3A2px%3B%27%3EThis+is+page%3C%2Fdiv%3E%3Cdiv+class%3D%27pageNumber+text%27%3E%3C%2Fdiv%3E%3Cdiv+class%3D%27text%27+style%3D%27color%3Ared%3Bmargin-right%3A2px%3Bmargin-left%3A2px%3B%27%3E+of+%3C%2Fdiv%3E%3Cdiv+class%3D%27totalPages+text%27%3E%3C%2Fdiv%3E`

### readable

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Make the pdf into a readable document by removing unnecessary elements such as navigation bars, ads, etc.

Examples:
- readable=true: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=https%3A%2F%2Fwww.bloomberg.com%2Fnews%2Farticles%2F2023-11-21%2Faltman-openai-board-open-talks-to-negotiate-his-possible-return%3Fembedded-checkout%3Dtrue&format=pdf&readable=true`

### pdf_title

- **Type:** string
- **Default:** —
- **Accepts:** string

Sets the title metadata field of the PDF document. This is visible in PDF readers under document properties. If not set, the page's <title> tag will be used as the PDF title.

### pdf_subject

- **Type:** string
- **Default:** —
- **Accepts:** string

Sets the subject metadata field of the PDF document. This is visible in PDF readers under document properties.

### pdf_author

- **Type:** string
- **Default:** —
- **Accepts:** string

Sets the author metadata field of the PDF document. This is visible in PDF readers under document properties.

### pdf_keywords

- **Type:** string
- **Default:** —
- **Accepts:** string

Sets the keywords metadata field of the PDF document. Pass a comma-separated list of keywords, e.g. "pdf_keywords": "screenshot,web,api". This is visible in PDF readers under document properties and can help with document organization and search.

### pdf_creator

- **Type:** string
- **Default:** —
- **Accepts:** string

Sets the creator metadata field of the PDF document. This typically indicates the application that created the original content. Visible in PDF readers under document properties.

## Cache Options

Options to control how Urlbox caches your screenshots or PDF's. Please note that caching only applies to requests from render links. POST requests to the API are not cached.

### force

- **Type:** boolean
- **Default:** false
- **Accepts:** true · false

Generate a fresh render on each request, instead of getting a cached version.

### unique

- **Type:** string
- **Default:** —
- **Accepts:** string

Pass a unique string such as a UUID, hash or timestamp, to have more control over when to generate a fresh screenshot or PDF.

### ttl

- **Type:** number
- **Default:** 2592000
- **Accepts:** number

The duration to keep a screenshot or PDF in the cache, in seconds. ttl stands for 'time to live'. The default value is also the maximum value: 2592000 seconds (30 days).

Examples:
- 1 day: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=nytimes.com&ttl=86400`
- 1 week: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=nytimes.com&ttl=604800`
- 1 month: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=nytimes.com&ttl=2592000`

## Request Options

Options to configure the browser, before navigating to the URL

### use_stealth

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Enable stealth mode to reduce automated-browser detection on sites that block headless browsers.

### hide_headless

- **Type:** boolean
- **Default:** false
- **Accepts:** true · false

A lighter-weight alternative to use_stealth for hiding that the browser is automated. It runs Chrome with a set of stealth plugins that patch the fingerprints headless Chrome normally leaks (for example navigator.webdriver, missing chrome runtime objects, and WebGL vendor strings), so pages are less likely to detect the render as a bot. use_stealth is the stronger option and takes precedence if both are set. Reach for hide_headless when a site does light bot-detection that a plain render trips but doesn't need the full stealth browser.

### proxy

- **Type:** string
- **Default:** —
- **Accepts:** string

Pass in a proxy server address to make screenshot requests via that server in the format [address]:[port]. If proxy authentication is required, you can use the following format: [user]:[password]@[address]:[port]. Requires the Ultra plan or above.

### use_proxy

- **Type:** string
- **Default:** —
- **Accepts:** string

This uses the proxy you have stored on your project in use to make screenshot requests via that server. Requires the Ultra plan or above.

### static_ip

- **Type:** enum
- **Default:** —
- **Accepts:** true · us-east · us-west · eu

**New.** Render from a fixed Urlbox IP address that you can allowlist on your firewall, WAF or staging site. Every request the page makes, to any domain, goes out through that IP. Set a region (us-east, us-west or eu) to always use that region's IP, or true to use any of them (then allowlist all three). See Static IP for whitelisting for the addresses. Cannot be combined with proxy, use_proxy, pov or urlbox_proxy. Values: true — Render from any of Urlbox's static IPs; us-east — Always render from 34.24.190.176 (US East); us-west — Always render from 34.187.238.195 (US West); eu — Always render from 34.158.137.109 (Europe). Requires the Business plan or above.

### header

- **Type:** array
- **Default:** —
- **Accepts:** string[]

Set a header on the request when loading the URL Example: To set the header with key X-My-Header to the value SomeValue, you would pass header=X-My-Header%3DSomeValue. This can be set multiple times, to set more than one header - e.g. header=X-My-Header%3DSomeValue&header=X-My-Other-Header%3DSomeOtherValue. As with all options passed via the query string, the header value must be URL encoded - so X-My-Header=SomeValue becomes X-My-Header%3DSomeValue in order to be interpreted correctly by Urlbox. Requires the HiFi plan or above.

Examples:
- header=X-My-Header=MyHeaderValue: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=test-site.urlbox.com%2Fheaders&full_page=true&block_ads=true&header=X-My-Header%3DMyHeaderValue`
- Setting multiple headers: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=test-site.urlbox.com%2Fheaders&full_page=true&block_ads=true&header=X-Header-1%3DvalueOfHeader1%2CX-Header-2%3DvalueOfHeader2`

### cookie

- **Type:** array
- **Default:** —
- **Accepts:** string[]

Sets a cookie on the request when loading the URL. Example: To set the cookie with key Opt-In to the value yes, you would set the value of this option to Opt-In=yes. Cookies can be passed as an array, to allow setting multiple cookies - e.g.["Opt-In=yes","Session-Id=DMTIzNDU"]. To achieve multiple cookies with render links, just set the cookie option multiple times, like cookie=Opt-In%3Dyes&cookie=Session-Id%3DDMTIzNDU. To set a specific domain on a cookie, you can do the following: OptIn=yes;Domain=.mydomain.com. You can set other attributes for the cookie such as Path, HttpOnly and SameSite

Examples:
- cookie=OptIn=yes: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=test-site.urlbox.com%2Fcookies&full_page=true&block_ads=true&cookie=OptIn%3Dyes`
- Setting multiple cookies: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=test-site.urlbox.com%2Fcookies&full_page=true&block_ads=true&cookie=OptIn%3Dyes%2CBestScreenshots%3Durlbox%2CSomeComplexJson%3D%7B%22user%22%3A%7B%22id%22%3A+123%2C%22name%22%3A+%22Alice%22%2C%22preferences%22%3A+%7B++%22notifications%22%3A+true%2C++%22theme%22%3A+%22dark%22%7D%2C%22address%22%3A+null%2C%22quote%22%3A+%22She+said%2C+%22It%27s+a+beautiful+day%21%22%22%2C%22complex_key%22%3A+%22Value+with+a+space%22%2C%22large_number%22%3A+12345678901234567890%2C%22mixed_array%22%3A+%5Btrue%2C+123%2C+%22text%22%2C+null%2C+%7B+%22nested%22%3A+%22object%22+%7D%5D%7D%2C%22is_active%22%3A+%22true%22%2C++%2F%2F+My+comment%22special_characters%22%3A+%22This+string+has+a+backslash%3A+%5C+and+a+newline%3A%0A%22%7D`
- Setting specific domain and other attributes for a cookie: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=test-site.urlbox.com%2Fcookies&full_page=true&block_ads=true&cookie=SomeCookie%3Dvalue%3BDomain%3D.mydomain.com%3BPath%3D%2Fsomepath%3BSameSite%3DLax%3B%2CBestScreenshots%3Durlbox%3B`

### user_agent

- **Type:** string
- **Default:** —
- **Accepts:** string

Sets the User-Agent string for the request. The user agent identifies what browser/device is making the request, which can affect how websites render content. **Presets:** * random - Uses a random user-agent to help avoid bot detection * mobile - Uses a modern iPhone/Safari user-agent string * desktop - Uses a modern desktop Chrome user-agent string for the platform the renderer runs on (Linux) **Why use this?** - Some websites serve different content based on the user agent (e.g., mobile vs desktop layouts) - Certain sites block requests from unknown or bot-like user agents - You may want to emulate how a specific browser or crawler sees a page **Testing your user agent:** Try rendering httpbin.org/user-agent to see exactly what user agent string is being sent. For a comprehensive list of user agent strings, see useragents.me.

Examples:
- user_agent=random: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=httpbin.org%2Fuser-agent&block_ads=true&fail_on_4xx=true&user_agent=random`
- user_agent=mobile: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=httpbin.org%2Fuser-agent&block_ads=true&fail_on_4xx=true&user_agent=mobile`
- user_agent=desktop: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=httpbin.org%2Fuser-agent&block_ads=true&fail_on_4xx=true&user_agent=desktop`
- Google bot: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=httpbin.org%2Fuser-agent&block_ads=true&fail_on_4xx=true&user_agent=Googlebot%2F2.1+%28%2Bhttp%3A%2F%2Fwww.google.com%2Fbot.html%29`
- Facebook crawler: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=httpbin.org%2Fuser-agent&block_ads=true&fail_on_4xx=true&user_agent=facebookexternalhit%2F1.1`
- Custom: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=httpbin.org%2Fuser-agent&block_ads=true&fail_on_4xx=true&user_agent=Mozilla%2F5.0+%28Macintosh%3B+Intel+Mac+OS+X+11_2_3%29+AppleWebKit%2F537.36+%28KHTML%2C+like+Gecko%29+Chrome%2F89.0.4389.90+Safari%2F537.36`

### emulate_touch

- **Type:** boolean
- **Default:** false
- **Accepts:** true · false

Present a phone or tablet user_agent (for example mobile) as a real touch device: the page sees a touchscreen (touch events, pointer: coarse, 5 touch points) and a phone-sized screen. Some mobile sites only show touch layouts or app-install banners to touch devices. The viewport and screenshot size do not change, and desktop user agents are not affected. On by default when use_stealth, hide_headless or auto_unblock is set. Set it to false to turn it off even then.

### platform

- **Type:** string
- **Default:** MacIntel
- **Accepts:** string

Sets the navigator.platform that the browser will report for the request. Useful for getting around certain scripts that detect the platform.

Examples:
- platform=MacIntel: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=test-site.urlbox.com%2Fuser-agent&engine_version=latest&fail_on_4xx=true&platform=MacIntel`
- platform=Linux x86_64: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=test-site.urlbox.com%2Fuser-agent&engine_version=latest&fail_on_4xx=true&platform=Linux+x86_64`
- platform=Linux armv81: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=test-site.urlbox.com%2Fuser-agent&engine_version=latest&fail_on_4xx=true&platform=Linux+armv81`
- platform=Win32: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=test-site.urlbox.com%2Fuser-agent&engine_version=latest&fail_on_4xx=true&platform=Win32`

### accept_lang

- **Type:** string
- **Default:** en-US
- **Accepts:** string

Sets an Accept-Language header on requests to the target URL

Examples:
- accept_lang=de-CH: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=test-site.urlbox.com%2Fuser-agent&full_page=true&block_ads=true&fail_on_4xx=true&accept_lang=de-CH`
- accept_lang=ko-KR: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=test-site.urlbox.com%2Fuser-agent&full_page=true&block_ads=true&fail_on_4xx=true&accept_lang=ko-KR`

### authorization

- **Type:** string
- **Default:** —
- **Accepts:** string

Sets an Authorization header on requests to the target URL. Can be used to pass an auth token through to the site in order to 'login' before rendering.

Examples:
- authorization=Basic my_base64_auth_token: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=test-site.urlbox.com%2Fheaders&full_page=true&block_ads=true&authorization=Basic+my_base64_auth_token`
- authorization=Bearer my_bearer_token: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=test-site.urlbox.com%2Fheaders&full_page=true&block_ads=true&authorization=Bearer+my_bearer_token`

### tz

- **Type:** string
- **Default:** America/New_York
- **Accepts:** string

Emulate the timezone to use when rendering pages. By default the rendering browser reports a US timezone (America/New_York or America/Los_Angeles, depending on which of our regions renders your screenshot) so that its clock agrees with where our renderers connect from. Set tz explicitly to pin it. Renders on the stable engine channel still report UTC until the next promotion of latest to stable (see engine_version). This matters whenever the page derives anything from the browser's local clock: displayed dates and times, opening hours, "expires in" countdowns, and any cookie or token whose lifetime the page calculates client-side. If your renders need to be identical every time, or your page assumes UTC, set tz=UTC. Example: tz=Europe/London. A list of timezone ID's can be found here: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

Examples:
- tz=Asia/Kolkata: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=test-site.urlbox.com%2Ftime-zone&fail_on_4xx=true&tz=Asia%2FKolkata`
- tz=Asia/Tokyo: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=test-site.urlbox.com%2Ftime-zone&fail_on_4xx=true&tz=Asia%2FTokyo`
- tz=America/Sao_Paulo: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=test-site.urlbox.com%2Ftime-zone&fail_on_4xx=true&tz=America%2FSao_Paulo`
- tz=Europe/London: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=test-site.urlbox.com%2Ftime-zone&fail_on_4xx=true&tz=Europe%2FLondon`

### engine_version

- **Type:** enum
- **Default:** —
- **Accepts:** stable · latest · experimental

Sets the version of the urlbox rendering engine to use when rendering the page. This can be useful for testing how a page will render in the latest version of our rendering engine.

### certify

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

This creates a hash of the rendered file, timestamp and options providing proof that a render was taken at a given time. Returns a hash, timestamp and the options used to hash. Checkout our guide on certifying a render for more information. Requires the Ultra plan or above.

## Wait Options

Options to control how Urlbox waits for the page or elements to load before rendering.

### redirect_after

- **Type:** number
- **Default:** —
- **Accepts:** 5000-95000

For the synchronous endpoint, the time in milliseconds before Urlbox returns a 307 redirect for a long-running render, so the connection isn't cut by upstream timeouts. Range: 5000-95000.

### delay

- **Type:** number
- **Default:** 0
- **Accepts:** number

The amount of time to wait before Urlbox captures a render in milliseconds.

### timeout

- **Type:** number
- **Default:** 30000
- **Accepts:** number

The amount of time to wait for the requested URL to load, in milliseconds. The timeout value needs to be between 5,000 and 100,000 milliseconds. The default is 30000 or 30 seconds.

### wait_until

- **Type:** enum
- **Default:** loaded
- **Accepts:** domloaded · mostrequestsfinished · requestsfinished · loaded

Waits until the specified DOM event has fired before capturing a render. The available options are: * domloaded (the DOMContentLoaded event is fired) * mostrequestsfinished (consider navigation to be finished when there are no more than 2 network connections for at least 500 ms) * requestsfinished (there are no more than 0 network connections for at least 500 ms) * loaded (the load event is fired)

Examples:
- wait_until=domloaded: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=example.com&wait_until=domloaded`
- wait_until=mostrequestsfinished: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=example.com&wait_until=mostrequestsfinished`
- wait_until=requestsfinished: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=example.com&wait_until=requestsfinished`
- wait_until=loaded: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=example.com&wait_until=loaded`

### wait_for

- **Type:** string
- **Default:** —
- **Accepts:** string

Waits for the element specified by this selector to be present in the DOM before taking a screenshot or PDF. By default, Urlbox will take a screenshot or PDF if the wait_for element is not found after waiting for the time specified by the wait_timeout option. If you prefer Urlbox to fail the request when the wait_for element is not found, pass fail_if_selector_missing=true

Examples:
- Without wait_for: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=test-site.urlbox.com%2Floads_in%2F10%2Fseconds&wait_for=`
- wait_for=#loaded_element: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=test-site.urlbox.com%2Floads_in%2F10%2Fseconds&wait_for=%23loaded_element`

### wait_for_state

- **Type:** enum
- **Default:** attached
- **Accepts:** visible · attached

Whether the element specified by wait_for should be visible or just present in the DOM. Visible means the element is attached to the DOM and has opacity > 0 and its width and height > 0 and doesn't have visibility:hidden set.

### wait_to_leave

- **Type:** string
- **Default:** —
- **Accepts:** string

Waits for the element specified by this selector to be absent from the DOM before taking a screenshot or PDF. A typical use-case would be waiting for loading spinners to be absent before taking a screenshot. By default, Urlbox will take a screenshot or PDF if the wait_to_leave element is still present after the time specified by the wait_timeout option. If you prefer Urlbox to fail the request when the wait_to_leave element is still present, pass fail_if_selector_present=true

Examples:
- Without wait_to_leave: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=test-site.urlbox.com%2Floads_in%2F10%2Fseconds&wait_to_leave=`
- wait_to_leave=#loading_element: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=test-site.urlbox.com%2Floads_in%2F10%2Fseconds&wait_to_leave=%23loading_element`

### wait_timeout

- **Type:** number
- **Default:** 30000
- **Accepts:** number

The amount of time to wait for the wait_for element to appear, or the wait_to_leave element to leave before continuing, in milliseconds.

## Fail Options

Options to dictate how Urlbox handles certain scenarios.

### fail_if_selector_missing

- **Type:** boolean
- **Default:** false
- **Accepts:** true · false

Fails the request if the elements specified by selector or wait_for options are not found on the page after waiting for wait_timeout.

Examples:
- fail_if_selector_missing=true: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&wait_for=%23element-that-never-appears&fail_if_selector_missing=true`

### fail_if_selector_present

- **Type:** boolean
- **Default:** false
- **Accepts:** true · false

Fails the request if the element specified by wait_to_leave option is found on the page after waiting for wait_timeout.

Examples:
- fail_if_selector_present=true: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&wait_to_leave=%23loading-spinner&fail_if_selector_present=true`

### fail_on

- **Type:** array
- **Default:** —
- **Accepts:** string | string[]

Pass in a specific HTTP status code (e.g., "400", "500") or an array of status codes (e.g., ["400", "404", "500"]) as strings. Urlbox will fail the request if the final response status code matches any of the specified codes. Also accepts "blank": fail the request when the screenshot is blank (at least 99% of its rows are one flat colour) instead of returning an empty image.

Examples:
- fail_on="404": `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=test-site.urlbox.com%2Fstatus%2F404&fail_on=404`

### fail_on_4xx

- **Type:** boolean
- **Default:** false
- **Accepts:** true · false

If fail_on_4xx=true and the requested URL returns a status code between 400 and 499, Urlbox fails the request with a 400 error, an error code of fail_on_4xx, and a message naming the status code (for example Page returned 404 and fail_on_4xx was true).

Examples:
- fail_on_4xx=true: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=test-site.urlbox.com%2Fstatus%2F404&fail_on_4xx=true`

### fail_on_5xx

- **Type:** boolean
- **Default:** false
- **Accepts:** true · false

If fail_on_5xx=true and the requested URL returns a status code between 500 and 599, Urlbox fails the request with a 400 error, an error code of fail_on_5xx, and a message naming the status code (for example Page returned 500 and fail_on_5xx was true).

Examples:
- fail_on_5xx=true: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=test-site.urlbox.com%2Fstatus%2F500&fail_on_5xx=true`

### fail_on_except

- **Type:** array
- **Default:** —
- **Accepts:** string | string[]

Specify status codes to exclude from fail_on, fail_on_4xx, or fail_on_5xx checks. For example, if you want to fail on all 5xx errors except 503, use fail_on_5xx=true with fail_on_except=503.

### retry_on

- **Type:** array
- **Default:** —
- **Accepts:** string | string[]

Automatically retry renders when specific conditions occur. Pass a single condition, a comma-separated string, or an array of conditions. When a condition matches, Urlbox will retry with exponential backoff (the delay doubles each time, starting at 1 second by default and capped at 30 seconds per wait) up to 2 times by default (3 total attempts including the original render). Use max_retries or max_attempts to change this. Retrying stops early if the request approaches the overall 5 minute render budget. **HTTP status conditions** (retry based on the page's response): - **4xx** - Retry when the page returns any 4xx status. This range deliberately skips retrying when the failure looks like a problem with the request itself rather than a block (for example a missing selector or an invalid option), since those would fail identically on every attempt. List codes like 403/429 explicitly to always retry them. - **5xx** - Retry when the page returns any 5xx status - **404**, **429**, **503**, etc. - Retry on specific status codes **Engine conditions** (retry when Urlbox encounters an internal error): - **timeout** - Retry when the render times out - **crash** - Retry when the browser crashes **Quality conditions:** - **small_size** - Retry when the screenshot is smaller than min_size_bytes - **blank** - Retry when the screenshot is blank: at least 99% of its rows are one flat colour. Catches pages whose content never appeared (hidden behind a dismissed popup, or not yet loaded). Not included in all. **Special values:** - **all** - Retry on any of the conditions above **Examples:** - retry_on: "4xx" - Retry when the page returns any 4xx status - retry_on: ["429", "503"] - Retry on rate limiting or service unavailable - retry_on: "timeout,crash" - Retry on engine failures only - retry_on: "5xx,timeout" - Retry on page 5xx errors or timeouts **Note:** If a condition matches both retry_on and fail_on, the request will be retried first. Use fail_on_except to mark specific status codes as acceptable (won't retry or fail). Requires the Ultra plan or above.

### retry_with

- **Type:** array
- **Default:** —
- **Accepts:** object | object[]

Change render options on retry attempts triggered by retry_on. Instead of retrying with the exact same options, each retry re-runs the render with the retry_with options merged over the original request, so you can escalate progressively: try a cheap, plain render first, and only add stealth or a proxy if the render fails. retry_with has no effect on its own; it only applies when retry_on triggers a retry. Because the value is a nested object, use it with JSON POST requests to the render endpoints. **Single object** - applied to every retry attempt. **Array of objects** - progressive escalation: the first retry uses the first element, the second retry the second, and so on; the last element is reused if there are more retries than elements. **Merging rules:** each retry's options are the original request options with that attempt's retry_with entry merged on top. Setting an option to null removes it for that attempt; options you don't mention are left unchanged. Only options that affect how the page is fetched and rendered can be changed on retry (proxy, stealth, waiting, viewport, headers/cookies and similar) - options that change the output itself (like format or full_page) cannot. A retry through a Urlbox managed proxy (pov) is charged once, at the dearest proxy any attempt used, and only when the render succeeds. Requires the Ultra plan or above.

### max_retries

- **Type:** number
- **Default:** 2
- **Accepts:** number

Maximum number of retry attempts when using retry_on. Must be between 0 and 5. If max_attempts is also set, max_attempts takes precedence. Requires the Ultra plan or above.

### max_attempts

- **Type:** number
- **Default:** 3
- **Accepts:** number

Maximum total number of render attempts (the original render plus retries) when using retry_on. Must be between 0 and 5. An alternative to max_retries: max_attempts is equivalent to max_retries + 1, and takes precedence over it when both are set. Requires the Ultra plan or above.

### auto_unblock_max_attempts

- **Type:** number
- **Default:** —
- **Accepts:** number

With auto_unblock, the most render attempts (the original render plus retries) Urlbox may make to get past a block. It can only lower the limit, to cap how long a blocked render takes and how much it can cost: Urlbox already stops when the retry steps for that kind of block run out, and never makes more than 8 attempts. A value above the limit for that block is treated as the limit. Must be between 1 and 8; 1 means no retries. Has no effect without auto_unblock. Retrying also stops early if the next attempt would not finish inside the overall 5 minute render budget. Retries through managed proxies are charged once, at the dearest proxy used, and only when the render succeeds. Requires the Ultra plan or above.

### retry_delay_ms

- **Type:** number
- **Default:** 1000
- **Accepts:** number

Base delay in milliseconds between retry attempts. The delay doubles with each retry (exponential backoff), with each individual wait capped at 30 seconds. Must be between 100 and 60000. Requires the Ultra plan or above.

### min_size_bytes

- **Type:** number
- **Default:** 1000
- **Accepts:** number

Minimum expected file size in bytes. Used with retry_on: "small_size" to retry when the screenshot is smaller than expected, which may indicate an error page was captured instead of the intended content. Requires the Ultra plan or above.

## Page Options

Options to modify the page state before taking a screenshot or PDF

### scroll_to

- **Type:** string
- **Default:** —
- **Accepts:** string | number

Scroll, to either an element or to a pixel offset from the top, before taking a screenshot

Examples:
- scroll_to=#playground: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&scroll_to=%23playground`
- scroll_to=1024: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&scroll_to=1024`
- scroll_to=5000: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&scroll_to=5000`

### click

- **Type:** string
- **Default:** —
- **Accepts:** string

Specifies an element selector to click before generating a screenshot or PDF Example: #clickme would click an element with id="clickme". Can be used multiple times to simulate multiple sequential click events. If the selector matches multiple elements, only the first element will be clicked.

Examples:
- Minimizing the overlay: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=https%3A%2F%2Fwww.wikipedia.org%2F&click=%23overlay-banner-toggle`
- Without minimizing the overlay: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=https%3A%2F%2Fwww.wikipedia.org%2F`

### click_all

- **Type:** array
- **Default:** —
- **Accepts:** string[]

Specifies an element selector to click before generating a screenshot or PDF Example: .clickme would click all elements with class="clickme". Can be used multiple times to simulate multiple sequential click events. If the selector matches multiple elements, all elements will be clicked.

Examples:
- Navigate to a Sign-up page, and agree to policies.: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=https%3A%2F%2Fwww.npmjs.com%2F&click_all=%23signup%2C%23signup_eula-agreement`

### hover

- **Type:** string
- **Default:** —
- **Accepts:** string

Specifies an element selector to hover over before generating a screenshot or PDF Example: #hoverme would hover over the element with id="hoverme"

Examples:
- Hovering over the ruby-on-rails logo: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=https%3A%2F%2Frubyonrails.org%2F&hover=.nav__logo`
- Without hovering over the ruby-on-rails logo: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=https%3A%2F%2Frubyonrails.org%2F`

### bg_color

- **Type:** string
- **Default:** —
- **Accepts:** string

Specify a hex code or CSS color string to use as the background color Some websites don't set a body background colour, and will show up as transparent backgrounds with PNG, or black when using JPG. Use this setting to set a background colour. If the website explicitly sets a transparent background on the html or body elements, this setting will be overridden.

### disable_js

- **Type:** boolean
- **Default:** false
- **Accepts:** true · false

Turns off javascript on the target URL. ~> Enabling this option will prevent full_page=true and many other options, because having javascript disabled prevents Urlbox from evaluating code inside the page's context.

Examples:
- disable_js=true: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=nytimes.com&disable_js=true`
- disable_js=false: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=nytimes.com&disable_js=false`

### show_certificate_errors

- **Type:** boolean
- **Default:** false
- **Accepts:** true · false

Shows browser certificate errors for pages with invalid HTTPS certificates. By default, Urlbox ignores certificate errors so pages with expired, self-signed, or otherwise invalid certificates can still render.

## Full Page Options

Advanced options to control how Urlbox takes full page screenshots, when full_page=true

### freeze_fixed

- **Type:** boolean
- **Default:** true
- **Accepts:** true · false

Detect fixed/sticky elements (headers, footers) and capture them only once, instead of repeating them across each stitched full-page section.

### max_sections

- **Type:** number
- **Default:** —
- **Accepts:** number

Maximum number of screenshot sections to capture when stitching a full-page screenshot.

### full_page_mode

- **Type:** enum
- **Default:** stitch
- **Accepts:** stitch · native

Whether to use scroll and stitch algorithm (the default) to render a full page screenshot, or to use the native full page screenshot algorithm, which is faster, but can be less accurate on some sites.

### scroll_scenes

- **Type:** enum
- **Default:** detect
- **Accepts:** detect · collapse · off

How a full-page screenshot handles scroll-driven scenes: a section pinned to the screen while you scroll through it, animating as you go (scroll-jacked product pages, parallax storytelling). Captured as-is, these come out as long runs of repeated or empty screens. collapse captures each scene once: a scene that only ever shows one picture is shown at one screen tall, and a scene that tells a story shows each distinct frame once, one after another. detect (the default) leaves the page as it is. Image formats only.

### full_width

- **Type:** boolean
- **Default:** false
- **Accepts:** true · false

When full_page=true, specify whether to capture the full width of the website, for example if the site is horizontally scrolling.

### allow_infinite

- **Type:** boolean
- **Default:** false
- **Accepts:** true · false

By default, when Urlbox detects an infinite scrolling page, it does not attempt to continue scrolling to the bottom, as this could result in infinite scrolling! If you want to override this behaviour, pass true for this option.

### skip_scroll

- **Type:** boolean
- **Default:** false
- **Accepts:** true · false

Enabling skip_scroll will speed up renders by skipping an initial scroll through the page, which is used to trigger any lazy loading elements.

Examples:
- skip_scroll=true: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&full_page=true&skip_scroll=true`
- skip_scroll=false: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&full_page=true&skip_scroll=false`

### detect_full_height

- **Type:** boolean
- **Default:** true
- **Accepts:** true · false

Stops elements whose height is tied to the viewport, like image backgrounds, from stretching to 4096px in full page screenshots. For a full page screenshot Urlbox sets the browser viewport as tall as 4096px, so an image background or hero section sized with 100vh or height: 100% would stretch with it. Urlbox detects these elements and keeps the viewport and section height at 1024px so they render at their normal size. On by default: you don't need to set this, and should pass false only to turn the check off.

### max_section_height

- **Type:** number
- **Default:** 4096
- **Accepts:** number

When Urlbox takes a full_page screenshot, the maximum height of each image section is set to 4096 pixels. If a sites height is greater than this value, Urlbox will start splitting the screenshot into sections. Sometimes it is worthwhile experimenting with this number.

### scroll_increment

- **Type:** number
- **Default:** —
- **Accepts:** number

Sets how many pixels to scroll when scrolling the page to trigger lazy loading elements. By default, the scroll increment is set to the browser viewport height. Some pages' lazy loading elements only trigger when the scroll increment is smaller than this, however, e.g. 400px.

### scroll_delay

- **Type:** number
- **Default:** —
- **Accepts:** number

When Urlbox decides to split a screenshot into multiple sections, the scroll delay is the time to wait between taking the screenshots of each individual section, in milliseconds. While Urlbox does detect animations, and attempts to wait for them before taking a screenshot, this option could be used to force Urlbox to wait for a certain amount of time after scrolling to the next section, to wait for things like animations to finish.

## Highlighting Options

Options for highlighting a given string on the page. These are useful for either highlighting or hiding (if you use the same foreground and background) words or a given set of characters.

### highlight

- **Type:** string
- **Default:** —
- **Accepts:** string

Specify a string to highlight on the page before capturing a screenshot or PDF. To highlight multiple words, separate words with a pipe character e.g. Hello|World

Examples:
- highlight=urlbox|api: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=urlbox.com&format=pdf&highlight=urlbox%7Capi`

### highlightfg

- **Type:** string
- **Default:** white
- **Accepts:** string

Specify the text color of the highlighted word.

Examples:
- Using color name: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=urlbox.com&format=pdf&highlight=urlbox%7Capi&highlightbg=black&highlightfg=blue`
- Using rgb: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=urlbox.com&format=pdf&highlight=urlbox%7Capi&highlightbg=black&highlightfg=rgb%2842%2C160%2C68%29`
- Using rgba: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=urlbox.com&format=pdf&highlight=urlbox%7Capi&highlightbg=black&highlightfg=rgba%28255%2C255%2C0%2C1%29`

### highlightbg

- **Type:** string
- **Default:** red
- **Accepts:** string

Specify the background color of the highlighted word.

Examples:
- Using color name: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=urlbox.com&format=pdf&highlight=urlbox%7Capi&highlightfg=black&highlightbg=blue`
- Using rgb: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=urlbox.com&format=pdf&highlight=urlbox%7Capi&highlightfg=black&highlightbg=rgb%2842%2C160%2C68%29`
- Using rgba: `https://api.urlbox.com/v1/YOUR_API_KEY/pdf?url=urlbox.com&format=pdf&highlight=urlbox%7Capi&highlightfg=black&highlightbg=rgba%28255%2C255%2C0%2C1%29`

## Geolocation Options

Options for the geolocation API.

### latitude

- **Type:** number
- **Default:** —
- **Accepts:** number

Sets the latitude used to emulate the Geolocation API.

Examples:
- latitude=40.7128: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=https%3A%2F%2Fwww.infobyip.com%2Fbrowsergeolocation.php&longitude=-74.006&latitude=40.7128`

### longitude

- **Type:** number
- **Default:** —
- **Accepts:** number

Sets the longitude used to emulate the Geolocation API.

Examples:
- longitude=-74.006: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=https%3A%2F%2Fwww.infobyip.com%2Fbrowsergeolocation.php&latitude=40.7128&longitude=-74.006`

### accuracy

- **Type:** number
- **Default:** 500
- **Accepts:** 0-100

Sets the accuracy of the Geolocation API, in metres (0 to 100). Defaults to 500 when not set. Range: 0-100.

Examples:
- accuracy=50: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=https%3A%2F%2Fwww.infobyip.com%2Fbrowsergeolocation.php&latitude=40.7128&longitude=-74.006&accuracy=50`

## Storage Options

Options related to storing the screenshots in Amazon S3.

### s3_presigned_url

- **Type:** string
- **Default:** —
- **Accepts:** string

Return a time-limited presigned URL to the render in your S3 bucket, instead of the default response. The URL grants temporary access without exposing your credentials.

### use_s3

- **Type:** boolean
- **Default:** false
- **Accepts:** true · false

Save the render directly to the S3 (or S3-Compatible) bucket configured on your account. Mutually exclusive with use_azure - a request setting both fails. Requires the HiFi plan or above.

### s3_path

- **Type:** string
- **Default:** —
- **Accepts:** string

Sets the S3 path, including subdirectories and the filename, to use when saving the render in your S3-compatible bucket. ~> The extension (e.g. .png, .jpg or .pdf) will be provided automatically, and should not be included in s3_path. Requires the HiFi plan or above.

### no_suffix

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

By default, urlbox adds the file extension (e.g. .png, .jpg, .pdf etc) to the s3_path (or azure_path). If no_suffix=true, the file extension will NOT be added to the path. Requires the HiFi plan or above.

### use_azure

- **Type:** boolean
- **Default:** false
- **Accepts:** true · false

Save the render directly to the Azure Blob Storage container configured on your project. Azure is not S3-compatible, so it has its own credentials (storage account, container and SAS token) and options - see the Azure Blob Storage guide for setup. Mutually exclusive with use_s3 - a request setting both fails. Requires the HiFi plan or above.

### azure_path

- **Type:** string
- **Default:** —
- **Accepts:** string

Sets the blob path, including subdirectories and the filename, to use when saving the render in your Azure container - the Azure equivalent of s3_path. Defaults to renders/{year}/{month}/{day}/{renderId}. ~> The extension (e.g. .png, .jpg or .pdf) will be provided automatically, and should not be included in azure_path. Requires the HiFi plan or above.

### s3_bucket

- **Type:** string
- **Default:** —
- **Accepts:** string

Overrides the configured bucket to use when saving the render. Requires the HiFi plan or above.

### s3_endpoint

- **Type:** string
- **Default:** —
- **Accepts:** string

You can change the endpoint URL to use an S3 compatible storage provider e.g. DigitalOcean Spaces, Minio, Wasabi, Cloudflare R2 and more. Requires the HiFi plan or above.

### s3_region

- **Type:** string
- **Default:** —
- **Accepts:** string

Override the configured S3 region when saving the render. Requires the HiFi plan or above.

### cdn_host

- **Type:** string
- **Default:** —
- **Accepts:** string

If your custom bucket is fronted by a CDN, you can set the host name here. Requires the HiFi plan or above.

### s3_storageclass

- **Type:** enum
- **Default:** standard
- **Accepts:** standard · standard_ia · reduced_redundancy · onezone_ia · intelligent_tiering · glacier · deep_archive · outposts

Sets the s3 storage class. Requires the HiFi plan or above.

## LLM Options

Options related to LLM usage.

### use_llm

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Use the LLM configuration setup in your project settings, or those passed into the request. Requires the Ultra plan or above.

### llm_prompt

- **Type:** string
- **Default:** —
- **Accepts:** string

The prompt to give the LLM EG "Analyse this image and its associated HTML, giving me back a summary of what the website contents are and a list of all of the links it has " Requires the Ultra plan or above.

### llm_system_prompt

- **Type:** string
- **Default:** —
- **Accepts:** string

This can be used to provide more overall context for the AI's response. Requires the Ultra plan or above.

### llm_key

- **Type:** string
- **Default:** —
- **Accepts:** string

The API access key for the given LLM provider. Requires the Ultra plan or above.

### llm_provider

- **Type:** enum
- **Default:** —
- **Accepts:** anthropic · openai · google · azure · mistral · cohere · amazon-bedrock · google-vertex · groq · xai · deepseek · perplexity · togetherai · fireworks · cerebras · openrouter

The LLM provider to use. Requires the Ultra plan or above.

### llm_model

- **Type:** string
- **Default:** —
- **Accepts:** string

The LLM model to use for the given provider. E.g. 'gpt-5.1' for OpenAI, 'claude-sonnet-4-5-20250929' for Anthropic. Requires the Ultra plan or above.

### llm_temperature

- **Type:** number
- **Default:** —
- **Accepts:** number

The temperature (creativity) for the LLM prompt. Defaults to 0 for less creative responses. Requires the Ultra plan or above.

### llm_max_tokens

- **Type:** number
- **Default:** —
- **Accepts:** number

The max number of output tokens the LLM can generate a response with. Defaults to 1000. Requires the Ultra plan or above.

### llm_height

- **Type:** number
- **Default:** —
- **Accepts:** number

The height of the thumbnail image that is sent to the LLM. Defaults to 512. Requires the Ultra plan or above.

### llm_width

- **Type:** number
- **Default:** —
- **Accepts:** number

The width of the thumbnail image that is sent to the LLM. Defaults to 512. Requires the Ultra plan or above.

### llm_base_url

- **Type:** string
- **Default:** —
- **Accepts:** string

Override the default API endpoint for the LLM provider. Useful for proxies, self-hosted models, or custom endpoints. Requires the Ultra plan or above.

### llm_azure_resource_name

- **Type:** string
- **Default:** —
- **Accepts:** string

Azure OpenAI resource name. Used to construct the endpoint URL: https://{resourceName}.openai.azure.com/

### llm_azure_api_version

- **Type:** string
- **Default:** —
- **Accepts:** string

Azure OpenAI API version. Required when using deployment URLs. E.g. '2024-02-15-preview'.

### llm_azure_use_deployment_urls

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Use legacy Azure deployment URL format. Useful for compatibility with certain Azure OpenAI models or deployments that require the legacy endpoint format.

### llm_aws_region

- **Type:** string
- **Default:** —
- **Accepts:** string

AWS region for Amazon Bedrock. Defaults to 'us-east-1'.

### llm_aws_access_key_id

- **Type:** string
- **Default:** —
- **Accepts:** string

AWS access key ID for Amazon Bedrock authentication.

### llm_aws_secret_access_key

- **Type:** string
- **Default:** —
- **Accepts:** string

AWS secret access key for Amazon Bedrock authentication.

### llm_aws_session_token

- **Type:** string
- **Default:** —
- **Accepts:** string

Optional AWS session token for temporary credentials with Amazon Bedrock.

### llm_gcp_project

- **Type:** string
- **Default:** —
- **Accepts:** string

Google Cloud project ID for Google Vertex AI.

### llm_gcp_location

- **Type:** string
- **Default:** —
- **Accepts:** string

Google Cloud region for Vertex AI. Defaults to 'us-central1'.

### llm_gcp_service_account_json

- **Type:** string
- **Default:** —
- **Accepts:** string

Google Cloud service account JSON key for Vertex AI authentication. Pass the entire JSON key file contents as a string.

### llm_full_response

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Return the full LLM response including usage statistics and metadata, rather than just the text content. Requires the Ultra plan or above.

### llm_output

- **Type:** enum
- **Default:** —
- **Accepts:** object · array · enum

You can provide a structured output type and schema to Urlbox, and we will prompt your LLM to give back that response structure. By passing an llm_schema without this option, it will default to responding with an object specified by your JSON Schema. If you choose Array, the response will be an array of your provided JSON Schema. If you choose enum, you can provide an array of strings as your schema, and your LLM will respond only with a value from that enum. Requires the Ultra plan or above.

### llm_schema

- **Type:** string
- **Default:** —
- **Accepts:** JSON

This is the JSON schema or string[] provided which we will pass over to your LLM. Your LLM provider will respond with a structured output (if supported by your provider) according to that schema. Please take a look at the various resources on the JSON Schema website for more information on designing and validating a JSON schema. Requires the Ultra plan or above.

Examples:
- Screenshot of urlbox.com: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&use_llm=true&llm_prompt=Please+analyse+this+image%2C+respecting+the+structured+output+provided.&llm_output=object&llm_schema=%7B%22type%22%3A%22object%22%2C%22properties%22%3A%7B%22url%22%3A%7B%22type%22%3A%22string%22%2C%22format%22%3A%22uri%22%2C%22description%22%3A%22The+original+URL+of+the+webpage%22%7D%2C%22title%22%3A%7B%22type%22%3A%22string%22%2C%22description%22%3A%22The+title+of+the+webpage%22%7D%2C%22description%22%3A%7B%22type%22%3A%22string%22%2C%22description%22%3A%22A+short+summary+of+what+is+visible+in+the+screenshot%22%7D%7D%2C%22required%22%3A%5B%22url%22%2C%22title%22%2C%22description%22%5D%7D`
- Screenshot of urlbox.com: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&use_llm=true&llm_prompt=Please+analyse+this+image%2C+respecting+the+structured+output+provided.&llm_output=array&llm_schema=%7B%22type%22%3A%22object%22%2C%22properties%22%3A%7B%22url%22%3A%7B%22type%22%3A%22string%22%2C%22format%22%3A%22uri%22%2C%22description%22%3A%22The+original+URL+of+the+webpage%22%7D%2C%22title%22%3A%7B%22type%22%3A%22string%22%2C%22description%22%3A%22The+title+of+the+webpage%22%7D%2C%22description%22%3A%7B%22type%22%3A%22string%22%2C%22description%22%3A%22A+short+summary+of+what+is+visible+in+the+screenshot%22%7D%7D%2C%22required%22%3A%5B%22url%22%2C%22title%22%2C%22description%22%5D%7D`
- Screenshot of urlbox.com: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&use_llm=true&llm_prompt=Analyse+this+website+screenshot%2C+and+tell+me+what+category+of+site+it+is+based+on+my+structured+output+schema.&llm_output=enum&llm_schema=website%2Cblog%2Cecommerce%2Cdocumentation%2Csocial%2Cnews`

## Video Options

Options for video output (mp4/webm), including the scroll motion, timing, and dimensions. These apply when the format is a video format.

### video_scroll_to

- **Type:** array
- **Default:** —
- **Accepts:** string | string[]

Scroll to and pause on specific page sections in turn while recording, instead of a constant scroll. Each stop is a CSS selector or a text=... locator, optionally followed by ;wait=... and ;duration=... (over a render link), or given as { selector | text, wait, duration, ease, offset } objects (in a JSON body). See the Recording videos guide.

Examples:
- Scroll to sections in turn: `https://api.urlbox.com/v1/YOUR_API_KEY/mp4?url=stripe.com&format=mp4&video_scroll_to=text%3DPricing%3Bwait%3D2s%2Ctext%3DEnterprise%3Bwait%3D2s`

### video_scroll

- **Type:** boolean
- **Default:** false
- **Accepts:** true · false

Smoothly scroll down the page while recording, section by section, then scroll back to the top. Scroll speed, easing, pauses and distance are controlled by the options below.

Examples:
- video_scroll=true: `https://api.urlbox.com/v1/YOUR_API_KEY/mp4?url=stripe.com&format=mp4&video_scroll=true`

### video_scroll_distance

- **Type:** number
- **Default:** —
- **Accepts:** number

Distance in pixels to scroll the page during the video.

Examples:
- video_scroll_distance=3000: `https://api.urlbox.com/v1/YOUR_API_KEY/mp4?url=stripe.com&format=mp4&video_scroll=true&video_scroll_distance=3000`

### video_scroll_duration

- **Type:** number
- **Default:** —
- **Accepts:** number

How long the scroll takes, in milliseconds.

Examples:
- video_scroll_duration=6000: `https://api.urlbox.com/v1/YOUR_API_KEY/mp4?url=stripe.com&format=mp4&video_scroll=true&video_scroll_duration=6000`

### video_scroll_back

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Whether to scroll back up to the top after reaching the bottom.

Examples:
- video_scroll_back=true: `https://api.urlbox.com/v1/YOUR_API_KEY/mp4?url=stripe.com&format=mp4&video_scroll=true&video_scroll_back=true`

### video_scroll_back_duration

- **Type:** number
- **Default:** —
- **Accepts:** number

Duration of the scroll-back motion, in milliseconds.

Examples:
- video_scroll_back_duration=3000: `https://api.urlbox.com/v1/YOUR_API_KEY/mp4?url=stripe.com&format=mp4&video_scroll=true&video_scroll_back=true&video_scroll_back_duration=3000`

### video_sections

- **Type:** number
- **Default:** —
- **Accepts:** number

Number of page sections to scroll through during the video.

Examples:
- video_sections=3: `https://api.urlbox.com/v1/YOUR_API_KEY/mp4?url=stripe.com&format=mp4&video_scroll=true&video_sections=3`

### video_ease

- **Type:** enum
- **Default:** quadratic.inout
- **Accepts:** linear.none · quadratic.in · quadratic.out · quadratic.inout · cubic.in · cubic.out · cubic.inout · quartic.in · quartic.out · quartic.inout · quintic.in · quintic.out · quintic.inout · sinusoidal.in · sinusoidal.out · sinusoidal.inout · exponential.in · exponential.out · exponential.inout · circular.in · circular.out · circular.inout · elastic.in · elastic.out · elastic.inout · back.in · back.out · back.inout · bounce.in · bounce.out · bounce.inout

Easing function applied to the scroll motion, for example quadratic.inout or bounce.out.

Examples:
- video_ease="cubic.inout": `https://api.urlbox.com/v1/YOUR_API_KEY/mp4?url=stripe.com&format=mp4&video_scroll=true&video_ease=cubic.inout`

### video_ease_end

- **Type:** enum
- **Default:** quadratic.inout
- **Accepts:** linear.none · quadratic.in · quadratic.out · quadratic.inout · cubic.in · cubic.out · cubic.inout · quartic.in · quartic.out · quartic.inout · quintic.in · quintic.out · quintic.inout · sinusoidal.in · sinusoidal.out · sinusoidal.inout · exponential.in · exponential.out · exponential.inout · circular.in · circular.out · circular.inout · elastic.in · elastic.out · elastic.inout · back.in · back.out · back.inout · bounce.in · bounce.out · bounce.inout

Easing function applied at the end of the scroll. Takes the same values as video_ease.

Examples:
- video_ease_end="quadratic.out": `https://api.urlbox.com/v1/YOUR_API_KEY/mp4?url=stripe.com&format=mp4&video_scroll=true&video_ease_end=quadratic.out`

### video_jitter

- **Type:** number
- **Default:** —
- **Accepts:** 0.01-0.99

Adds slight random variation (jitter) to the scroll motion. Range: 0.01-0.99.

Examples:
- video_jitter=0.3: `https://api.urlbox.com/v1/YOUR_API_KEY/mp4?url=stripe.com&format=mp4&video_scroll=true&video_jitter=0.3`

### video_prescroll_duration

- **Type:** number
- **Default:** —
- **Accepts:** number

Pause before scrolling starts, in milliseconds.

Examples:
- video_prescroll_duration=2000: `https://api.urlbox.com/v1/YOUR_API_KEY/mp4?url=stripe.com&format=mp4&video_scroll=true&video_prescroll_duration=2000`

### video_postscroll_duration

- **Type:** number
- **Default:** —
- **Accepts:** number

Pause after scrolling finishes, in milliseconds.

Examples:
- video_postscroll_duration=2000: `https://api.urlbox.com/v1/YOUR_API_KEY/mp4?url=stripe.com&format=mp4&video_scroll=true&video_postscroll_duration=2000`

### video_rest_duration

- **Type:** number
- **Default:** —
- **Accepts:** number

Rest/pause between scroll segments, in milliseconds.

Examples:
- video_rest_duration=1000: `https://api.urlbox.com/v1/YOUR_API_KEY/mp4?url=stripe.com&format=mp4&video_scroll=true&video_rest_duration=1000`

### video_fps

- **Type:** number
- **Default:** —
- **Accepts:** number

Frames per second of the output video.

Examples:
- video_fps=60: `https://api.urlbox.com/v1/YOUR_API_KEY/mp4?url=stripe.com&format=mp4&video_scroll=true&video_fps=60`

### video_bits_per_second

- **Type:** number
- **Default:** —
- **Accepts:** number

Target bitrate of the output video, in bits per second.

Examples:
- video_bits_per_second=4000000: `https://api.urlbox.com/v1/YOUR_API_KEY/mp4?url=stripe.com&format=mp4&video_scroll=true&video_bits_per_second=4000000`

### video_width

- **Type:** number
- **Default:** —
- **Accepts:** number

Width of the output video, in pixels.

Examples:
- video_width=1280: `https://api.urlbox.com/v1/YOUR_API_KEY/mp4?url=stripe.com&format=mp4&video_scroll=true&video_width=1280`

### video_height

- **Type:** number
- **Default:** —
- **Accepts:** number

Height of the output video, in pixels.

Examples:
- video_height=720: `https://api.urlbox.com/v1/YOUR_API_KEY/mp4?url=stripe.com&format=mp4&video_scroll=true&video_height=720`

### video_time

- **Type:** number
- **Default:** —
- **Accepts:** number

Total duration of the video, in milliseconds (8000 = 8 seconds). Longer videos cost more, so set a sensible cap.

Examples:
- video_time=8000: `https://api.urlbox.com/v1/YOUR_API_KEY/mp4?url=stripe.com&format=mp4&video_scroll=true&video_time=8000`

## Extraction Options

Capture extra data alongside the render. Each option produces an additional file (a 'side-render') saved with the main render.

### save_markdown

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Also extract and save the page as Markdown alongside the render.

Examples:
- save_markdown=true: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&save_markdown=true`

### save_html

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Also save the page's rendered HTML.

Examples:
- save_html=true: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&save_html=true`

### save_mhtml

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Also save the page as MHTML (a single-file web archive).

Examples:
- save_mhtml=true: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=urlbox.com&save_mhtml=true`

### save_metadata

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Also extract and save page metadata (title, description, OpenGraph, etc.).

Examples:
- save_metadata=true: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=bbc.co.uk&save_metadata=true`

### save_links

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Also extract and save the list of links found on the page.

Examples:
- save_links=true: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=news.ycombinator.com&save_links=true`

### save_headings

- **Type:** boolean
- **Default:** —
- **Accepts:** true · false

Also extract and save the page's headings.

Examples:
- save_headings=true: `https://api.urlbox.com/v1/YOUR_API_KEY/webp?url=en.wikipedia.org%2Fwiki%2FScreenshot&save_headings=true`

## Webhook Options

Receive the render result via webhook instead of polling, when using the asynchronous API.

### webhook_url

- **Type:** string
- **Default:** —
- **Accepts:** string

A URL that Urlbox will POST the render result to once the render completes, when using the asynchronous render endpoint. Verify the request signature with your project's webhook secret.
