Render limits and FAQ
Concurrency and size limits for screenshots and videos in the beta, retention of artifacts, and answers to common questions about render.
Limits
| Limit | Default |
|---|---|
Renders at once (render.concurrent) | 2 per organization |
| Screenshot request body | 5 MiB, of which html up to 4 MiB |
| Screenshot viewport | 320 to 3840 wide, 240 to 2160 high, at dpr 1, 2 or 3 |
| Screenshot variants | 4 per capture |
| Video beats | 100, each with up to 50 steps and 2,000 characters of narration |
| Video output | Up to 3840 by 2160 at 24, 25, 30, 50 or 60 frames per second |
| Video request body | 1 MiB |
A request over a limit fails with limit_exceeded or payload_too_large; too many renders at once returns 429 concurrency_limited.
Retention
Screenshots, videos, their artifacts and the raw captures behind restyles are kept for 7 days. An artifact URL works until its url_expires_at; GET /v1/render/artifacts/{artifact_id} returns a fresh URL, valid for 24 hours. After 7 days the artifact is gone and its ID answers 410 artifact_expired.
FAQ
Render captures once the page has loaded and its network has gone quiet for a short window. Content that animates in after that can be caught mid-animation. Wait longer with wait_for_ms, or use wait_until: "networkidle".
Yes. The URLs need no credentials, are served with Content-Security-Policy: sandbox from usercontent.b3os.org, and never set cookies. Each URL expires; store the artifact ID and ask for a fresh URL when you need one.
Yes. Load a vision profile with profile on a screenshot or source.profile on a video.
Set seed and start_time. The recorder runs the page on a virtual clock with seeded randomness and a fixed start date, so a re-render produces the same frames. Sites that change between runs still change.
Yes, restyle it within 7 days: new background, frame, captions, size or formats. Restyling reuses the recorded capture and narration, so no browser runs. Camera moves stay as recorded.
The node's own speech model, through /v1/infer/audio/speech with word timestamps. A video bills only its seconds of output, render.video_s, narration included.