Menu
Docs/Video & GIF Recording

Video & GIF Recording

Record any webpage as a video: page load animations, interactions, or a smooth scroll from top to bottom. Returns MP4, WebM, or high-quality GIF.

Video recording is available on Growth plan and above.

Endpoint

POST/v1/video

Request body

{
  "url": "https://stripe.com",
  "format": "mp4",
  "duration": 5,
  "width": 1280,
  "height": 720
}
ParameterTypeDefaultDescription

Response

Binary video file with appropriate Content-Type header (video/mp4, video/webm, or image/gif) and Content-Disposition: attachment.

Scrolling screenshot shortcut

Use GET /v1/scroll for a quick scrolling GIF/MP4 without a JSON body:

GET/v1/scroll
curl "https://api.snapsharp.dev/v1/scroll?url=https://stripe.com&format=gif&duration=6" \
  -H "Authorization: Bearer sk_live_..." \
  -o scroll.gif
ParameterTypeDefaultDescription

Examples

cURL — Record as MP4

curl -X POST https://api.snapsharp.dev/v1/video \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"url":"https://stripe.com","format":"mp4","duration":5}' \
  -o recording.mp4

cURL — Scrolling GIF

curl -X POST https://api.snapsharp.dev/v1/video \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"url":"https://stripe.com","format":"gif","scroll":true,"duration":8,"scroll_speed":4}' \
  -o scroll.gif

Node.js

const fs = require('fs');

const response = await fetch('https://api.snapsharp.dev/v1/video', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer sk_live_...',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    url: 'https://stripe.com',
    format: 'mp4',
    duration: 5,
    width: 1280,
    height: 720,
  }),
});

const buffer = await response.arrayBuffer();
fs.writeFileSync('recording.mp4', Buffer.from(buffer));

Python

import requests

response = requests.post(
    'https://api.snapsharp.dev/v1/video',
    headers={'Authorization': 'Bearer sk_live_...'},
    json={
        'url': 'https://stripe.com',
        'format': 'gif',
        'scroll': True,
        'duration': 6,
        'scroll_speed': 3,
    },
)

with open('scroll.gif', 'wb') as f:
    f.write(response.content)

Plan limits

PlanMax DurationMax FPSMax Resolution
Free
Starter
Growth10s241280px
Business30s301920px
Enterprise60s301920px