Check a recording request
estimate_recordingCheck a recording request without recording or using up any quota. Takes the same arguments as record_html. Returns what to fix (invalidIssues, limitIssues, capacity.reasons), the resource estimate, your limits and your usage: recordings in progress and recordings started in the last 24 hours, plus credits: what the recording would use and what the account has.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"width": "<width>",
"height": "<height>",
"durationSec": "<durationSec>"
},
"name": "estimate_recording"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| crf | No | Quality for mp4 and webm, from 10 (best, largest) to 35 (smallest). Not together with bitrateMbps; not for gif or mov. | |
| fit | No | How the frame fills outputSize: fill (stretch), contain (letterbox in background) or cover (crop to fill). | |
| fps | No | Frame rate: one of 15, 23.976, 24, 25, 29.97, 30, 59.94, 60 (default 30). For gif, a whole number from 1 to 30. | |
| url | No | Public http(s) URL of the page or creative to record. The recorder runs on the internet: localhost, private networks and pages behind a sign-in (such as claude.ai/chat links) are out of reach. Pass url or html, not both. | |
| crop | No | Record only this region of the viewport: { x, y, width, height } in pixels, even values, inside the viewport. | |
| html | No | A complete HTML document to record instead of a url, e.g. a banner you just wrote or an artifact from this conversation. One file: inline the CSS and JavaScript, and load images, fonts and libraries from public https URLs or data: URIs. It is published at an unlisted public URL and recorded from there. | |
| loop | No | gif only: whether the gif loops. | |
| sync | No | How trim markers are used: auto (default: markers when the page calls trim_start(), else the load event), load (ignore markers) or markers (fail when trim_start() is not called within markerWaitSec). | |
| audio | No | Record the page’s audio too. Not for gif. | |
| width | Yes | Viewport width in CSS pixels: even, 16–7680. Use the creative’s size, e.g. 300 for a 300×250 banner or 1920 for a full HD page. | |
| format | No | mp4 (default, H.264), webm (VP9), mov (ProRes, for video editors) or gif. | |
| height | Yes | Viewport height in CSS pixels: even, 16–7680. | |
| actions | No | Clicks, for a page that waits for a Play or Start button: [{"type":"click","text":"Play"}]. A click finds its element by selector (CSS), text (visible text, aria-label, title or alt; case and symbols such as ▶ ignored) or point ({x, y} in the viewport), afterMs after load or the previous click. The video starts at the first click unless startsVideo is false. An element that is not on screen within 10 s fails the recording. | |
| startAt | No | Where the video starts: "load" (default: the load event, or the first trim_start() call) or that many milliseconds after it (0–120000). | |
| renderer | No | auto (default), cpu or gpu. Leave it on auto. | |
| maxSizeMb | No | Keep the file under this many megabytes (decimal: 0.6 = 600 KB), e.g. a platform’s upload limit or an email gif. The quality is lowered only as much as needed; frames, size and duration stay as requested. Not with bitrateMode cbr or format mov. | |
| background | No | Letterbox colour for fit: contain, as #rrggbb. | |
| outputSize | No | Scale the video to { width, height } (even values); see fit. | |
| bitrateMbps | No | A target bitrate in Mbps (1–100) instead of crf, for platforms with a bitrate spec (e.g. DOOH). Not for gif or mov. | |
| bitrateMode | No | vbr (default) or cbr. Needs bitrateMbps. | |
| durationSec | Yes | Length of the video in seconds (1–300; your account limit applies). With trim_end() it is the maximum. | |
| pixelFormat | No | yuv420p (default; plays everywhere), yuv422p or yuv444p. For mov, yuv444p picks ProRes 4444, otherwise 422 HQ. | |
| transparent | No | Keep what the page draws without its background, as an alpha channel: webm (VP9 with alpha), mov (ProRes 4444) or gif (one transparent colour). Not for mp4. For stickers, overlays, lower thirds and Lottie or Rive style animations; the page’s html and body background is removed. Width up to 3840. | |
| markerWaitSec | No | How long to wait for trim_start() after load, in seconds (0–60, default 10). | |
| markerLatencyMs | No | Overrides the measured delay between a marker call and the frame it marks (0–1000 ms). Rarely needed. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ok | Yes | ||
| usage | Yes | ||
| limits | Yes | ||
| capacity | Yes | ||
| estimate | Yes | ||
| limitIssues | Yes | ||
| invalidIssues | Yes |