Archived docs Get your API Key
Get started
Tutorials
Guides
Reference
Help for coding agents
🤖 AI Assistant

File retention

JSON2Video is a video generation platform, not a storage or hosting service. Every file the platform produces has a retention window, after which it is permanently deleted. Download or re-host anything you want to keep.

Retention at a glance

File Where you see it Retention
Rendered video url in GET /v2/movies 7 days after the render finishes
Movie entry (status, timings, credits spent) Render history / GET /v2/movies Kept — not removed with the file
Cached generated or downloaded asset url in GET /v2/preloads when persistent: false 3 days after generation
Render working files Internal, not exposed 3 days
Media library files (uploaded or save-to-media) Media panel / GET /v2/media Kept while your account has credits — see below

All periods are counted from the moment the file is created, not from the last time it was accessed. Downloading a file does not extend its life.

Rendered videos — 7 days

Every finished render is stored for 7 days and then deleted automatically. This applies to every plan, free and paid alike: there is no longer window to buy today.

The dashboard's render logs show a countdown per render. Through the API, a video whose file has expired returns url: null.

Two things to keep in mind:

  • The URL is meant for you to download the file. It is not a content delivery service — do not embed it in a public page or app that depends on it long-term, because it stops working after 7 days.
  • To free storage earlier, call DELETE /v2/movies. It removes the file immediately and keeps the movie entry in your history.

Cached assets — 3 days

Assets produced by POST /v2/preloads, by movie.preload[], or by generable elements inside a scene, go to a temporary cache. The response tells you exactly what you got:

  • persistent: false — temporary URL, with expires_at set to roughly 3 days after generation.
  • persistent: true — the asset was saved to your Media library and follows the Media rules below.

While an asset is in the cache it is reused automatically by any later render that references the same prompt or source URL, so re-rendering within the window does not cost credits twice. Once it expires, the next render regenerates it and charges for it again.

To keep a generated asset beyond the cache window, set save-to-media: true. See Save generated assets to Media.

Media library files

Files in your Media library — both the ones you upload and the ones persisted with save-to-media — have no expiry date. They are kept as long as your account holds credits, and their URLs are stable, so these are the files you can safely reference from scheduled renders and long-lived templates.

They are deleted in three cases:

  1. You delete them, from the Media panel or with DELETE /v2/media. Immediate and irreversible.
  2. Your account runs out of credits and stays at zero for 30 days. When the balance reaches zero a grace period starts. If you top up or renew at any point during those 30 days, the clock is cleared and nothing is deleted. If it elapses, all your Media library files and your rendered videos are permanently removed.
  3. You close your account. Export anything you want to keep first.

The 30-day grace period tracks your credit balance, not your subscription: an account with credits left over from a previous cycle is not at risk, and neither is a prepaid account with a positive balance.

Recommended practice

  • Treat every JSON2Video URL as a pickup point, not as storage. Download the render — or use an export destination to push it straight to your own bucket, FTP, or platform — as soon as it is ready.
  • Use webhooks instead of polling, so you fetch the file as soon as it exists rather than days later.
  • Put the assets you reuse across renders (logos, intros, background music) in the Media library, not in the temporary cache.
  • If your account is going to sit idle without credits, export your Media library before the 30-day window elapses.

See also