A still screenshot shows the top of a page. A short video scrolling from the hero to the footer shows the whole site, and it plays inline on social media, in sales emails as a GIF preview, on portfolio pages and in ads. Recording it by hand with a screen recorder takes minutes per site and looks different every time. The API records it in one request, the same way every time.
A scroll-through video
animation_scroll scrolls smoothly from the top to the bottom over animation_duration seconds:
curl -X POST "https://shotkit.net/api/take" \
-H "X-Access-Key: YOUR_ACCESS_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com","format":"mp4","animation_scroll":true,"animation_duration":12,"viewport_width":1280,"viewport_height":720,"block_cookie_banners":true,"block_chats":true}' \
--fail-with-body -o shot.mp4A 1280 × 720 viewport gives a 720p, 16:9 video at 30 frames per second. Blocking cookie banners and chat widgets keeps them from sitting on top of the whole recording.
A mobile, vertical video
For Reels, Shorts and TikTok, record the mobile site with a phone preset. Recordings are made at 1× resolution, so the video is the device's CSS size (393 × 852 for an iPhone 15 Pro):
curl -X POST "https://shotkit.net/api/take" \
-H "X-Access-Key: YOUR_ACCESS_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com","format":"mp4","viewport_device":"iphone_15_pro","animation_scroll":true,"animation_duration":10,"block_cookie_banners":true}' \
--fail-with-body -o shot.mp4Record an interaction
Recording starts after clicks, scripts and waits, so you can set the scene first: open a menu, switch a pricing toggle, or run a script that drives a short demo while recording.
curl -X POST "https://shotkit.net/api/take" \
-H "X-Access-Key: YOUR_ACCESS_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com","format":"webm","click":"#annual-toggle","animation_duration":5,"error_on_click_selector_not_found":false}' \
--fail-with-body -o shot.webmThings to know
- Videos are 0.5 to 20 seconds long, at up to 30 frames per second.
image_qualitysets the bitrate. - Recording takes real time: a 15-second video takes at least 15 seconds to make. For batches, use
asyncwith awebhook_url. - Videos have no audio.
selectorcrops the recording to one element, for example an animated hero or a product demo widget.
Frequently asked questions
MP4 or WebM?
MP4 (H.264) plays everywhere, including Safari, iOS, social platforms and video editors. WebM is a little smaller and fine for browsers and web pages.
How long can a video be?
Up to 20 seconds per request. For a long page, a faster scroll over 15–20 seconds usually reads better than a slow one.
Can I get a GIF instead?
Yes, set format: "gif", or an animated WebP. See website to GIF.
Can I record a page behind a login?
Yes. Pass cookies or an authorization header and the page loads as that user before recording starts.