remotion-dev/remotion · error · Error
{json.error}
Error message
{json.error} What it means
getUsage() POSTs to the Remotion licensing server (remotion.pro) and expects a JSON body with success:true. If the server returns success:false it surfaces the server's error string verbatim. Typical server errors are invalid/expired license key, malformed request, or rate limiting.
Source
Thrown at packages/licensing/src/get-usage.ts:60
body: JSON.stringify({
apiKey: licenseKey ?? apiKey,
since: since ?? null,
}),
headers: {
'Content-Type': 'application/json',
},
});
const json = (await res.json()) as GetUsageApiResponse;
if (json.success) {
return {
cloudRenders: json.cloudRenders,
webRenders: json.webcodecConversions,
webcodecConversions: json.webcodecConversions,
};
}
throw new Error(json.error);
};
View on GitHub (pinned to 78fe4bb3fd)
Solutions
- Read json.error verbatim — the server message states the precise problem (invalid key, quota, etc.).
- Verify the license key in the Remotion license dashboard and re-paste it.
- Use the correct credential field for your version (licenseKey on v5; apiKey or licenseKey on v4).
- Retry after confirming the key, since some failures are transient backend issues.
Example fix
// before
const usage = await getUsage({apiKey: 'old-or-typoed-key'});
// after
const usage = await getUsage({licenseKey: process.env.REMOTION_LICENSE_KEY}); Defensive patterns
Strategy: try-catch
Validate before calling
function looksLikeLicenseKey(k: string | null): boolean {
return typeof k === 'string' && k.length > 10 && /^[A-Za-z0-9_-]+$/.test(k);
}
if (!looksLikeLicenseKey(process.env.REMOTION_LICENSE_KEY ?? null)) {
console.warn('License key looks invalid; getUsage may fail.');
} Type guard
const isValidLicenseKey = (k: unknown): k is string => typeof k === 'string' && k.trim().length > 10;
Try / catch
try {
const usage = await getUsage({licenseKey});
} catch (e) {
console.error('Licensing server error:', (e as Error).message);
// surface to user, do not block render
} Prevention
- Store REMOTION_LICENSE_KEY in your environment, never in code.
- Use the correct credential field for your Remotion major version.
- Treat getUsage failures as non-fatal in your dashboards.
- Rotate keys via the remotion.pro dashboard and update env promptly.
When it happens
Trigger: Calling getUsage() with a wrong/expired license key; passing apiKey instead of licenseKey on v5 (or vice versa on v4); network proxies mangling the response; the licensing backend returning a temporary error.
Common situations: Renewed but not re-installed license keys; copy-paste errors in the license key; pointing to the wrong account; license revoked.
Related errors
- {json.error}
- Unexpected response from server: ${JSON.stringify(json)}
- inputRange must contain only numbers
- outputStyles must contain only objects
- Argument passed to "${api}" for param "${param}" is undefine
AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12).
Data as JSON: /api/errors/a0690e5a86242e7c.
Report an issue: GitHub.