Makes a free Derived copy of an asset from a recipe: a frame from a video, or a cropped, resized or converted image, or a trimmed, cropped, despilled, LUT-graded, resized or converted video. The work runs in the background, so this returns a run; its output’s asset is the copy. It needs runs:read as well as runs:create, because it returns the run. Send Prefer: wait=N to hold the response until it ends. Your earlier run of the same recipe on this asset for the same destination returns with reused true instead of running again, unless it failed. New runs count toward the running caps. A test key can’t transform assets.
Makes retries safe: a retry with the same key and body returns the first response for 24 hours instead of repeating the work. Reusing a key with a different body returns 409.
Opens Generate's review of the run's first ready output in ZeroGen, on your organization's host, after sign-in. null until an output is ready, and for test keys. It can change until the run ends
True when this is your earlier run of the same recipe on this asset for the same destination, finished or in progress, so no new work started
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"ZeroGen Docs","description":"How to make and organize images, video and audio in ZeroGen, in the app and through the API.","colors":{"primary":"#18181B","light":"#E4E4E7","dark":"#18181B"},"logo":{"light":"https://mintcdn.com/zero-gen/W2GmhRNTfZqjZw9S/logo/light.svg?fit=max\u0026auto=format\u0026n=W2GmhRNTfZqjZw9S\u0026q=85\u0026s=35d09db4e90566e79f5af1c3d8ffb4be","dark":"https://mintcdn.com/zero-gen/W2GmhRNTfZqjZw9S/logo/dark.svg?fit=max\u0026auto=format\u0026n=W2GmhRNTfZqjZw9S\u0026q=85\u0026s=f4fcd821b66e08a00c2975e2458a4edc"},"favicon":"https://mintcdn.com/zero-gen/W2GmhRNTfZqjZw9S/favicon.svg?fit=max\u0026auto=format\u0026n=W2GmhRNTfZqjZw9S\u0026q=85\u0026s=46d5ff92806d6efc0a27dd88bce49b88","api":{"openapi":"openapi.json","playground":{"display":"simple"},"examples":{"languages":["curl","javascript","python"]}},"contextual":{"options":["copy","view","claude","chatgpt","cursor","vscode","mcp"],"display":"header"},"interaction":{"drilldown":false},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"zero-gen","hasAudioNarration":false,"actualSubdomain":"zero-gen","customDomains":["docs.zerogen.com"],"gitSource":{"type":"github","owner":"zerogeneration","repo":"platform","deployBranch":"main","contentDirectory":"apps/api-docs","isPrivate":true,"mountPath":"","label":"","_id":"6adcf0cde85b0c9dcc4acad1"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aee9ca376ce3e6b9f2401ba","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"Developers","count":110},{"language":"default","tag":"Docs","count":64},{"language":"default","tag":"Models","count":40},{"language":"default","tag":"Endpoints","count":40},{"language":"default","tag":"Get started","count":10},{"language":"default","tag":"Generate","count":9},{"language":"default","tag":"Video","count":9},{"language":"default","tag":"Foundations","count":8},{"language":"default","tag":"Image","count":8},{"language":"default","tag":"Assets","count":8}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#navigation-items>div:only-of-type>.sidebar-group-header{display:none}#navigation-items>div:only-of-type>*>*>button[aria-expanded]{font-weight:600;color:rgb(var(--gray-900))}.dark #navigation-items>div:only-of-type>*>*>button[aria-expanded]{color:rgb(var(--gray-200))}.nav-tabs a[href=\"https://zerogen.com/changelog\"]{align-self:center;height:auto;padding:0.25rem 0.625rem;border-radius:9999px;background-color:rgb(var(--gray-100));gap:0.375rem}.dark .nav-tabs a[href=\"https://zerogen.com/changelog\"]{background-color:rgb(var(--gray-800))}.nav-tabs a[href=\"https://zerogen.com/changelog\"]>div{display:none}.nav-tabs a[href=\"https://zerogen.com/changelog\"]::after{content:\"\";width:0.75rem;height:0.75rem;background-color:currentColor;-webkit-mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h6v6'/%3E%3Cpath d='M10 14 21 3'/%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3C/svg%3E\") center / contain no-repeat;mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h6v6'/%3E%3Cpath d='M10 14 21 3'/%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3C/svg%3E\") center / contain no-repeat}"}],"page":{"pagePath":"api-reference/assets/transform-an-asset","slug":"/api-reference/assets/transform-an-asset","pageMetadata":{"title":"Transform an asset","description":"Makes a free Derived copy of an asset from a recipe: a frame from a video, or a cropped, resized or converted image, or a trimmed, cropped, despilled, LUT-graded, resized or converted video. The work runs in the background, so this returns a run; its output's asset is the copy. It needs `runs:read` as well as `runs:create`, because it returns the run. Send `Prefer: wait=N` to hold the response until it ends. Your earlier run of the same recipe on this asset for the same destination returns with `reused` true instead of running again, unless it failed. New runs count toward the running caps. A test key can't transform assets.\n\nNeeds the `runs:create` and `runs:read` scopes.","deprecated":null,"version":null,"openapi":"/openapi.json post /assets/{assetId}/transform","href":"/api-reference/assets/transform-an-asset","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Makes a free Derived copy of an asset from a recipe: a frame from a video, or a cropped, resized or converted image, or a trimmed, cropped, despilled, LUT-graded, resized or converted video. The work runs in the background, so this returns a run; its output’s asset is the copy. It needs \", _jsx(_components.code, {\n children: \"runs:read\"\n }), \" as well as \", _jsx(_components.code, {\n children: \"runs:create\"\n }), \", because it returns the run. Send \", _jsx(_components.code, {\n children: \"Prefer: wait=N\"\n }), \" to hold the response until it ends. Your earlier run of the same recipe on this asset for the same destination returns with \", _jsx(_components.code, {\n children: \"reused\"\n }), \" true instead of running again, unless it failed. New runs count toward the running caps. A test key can’t transform assets.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Needs the \", _jsx(_components.code, {\n children: \"runs:create\"\n }), \" and \", _jsx(_components.code, {\n children: \"runs:read\"\n }), \" scopes.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Transform an asset","description":"Makes a free Derived copy of an asset from a recipe: a frame from a video, or a cropped, resized or converted image, or a trimmed, cropped, despilled, LUT-graded, resized or converted video. The work runs in the background, so this returns a run; its output's asset is the copy. It needs `runs:read` as well as `runs:create`, because it returns the run. Send `Prefer: wait=N` to hold the response until it ends. Your earlier run of the same recipe on this asset for the same destination returns with `reused` true instead of running again, unless it failed. New runs count toward the running caps. A test key can't transform assets.\n\nNeeds the `runs:create` and `runs:read` scopes.","deprecated":null,"version":null,"openapi":"/openapi.json post /assets/{assetId}/transform","href":"/api-reference/assets/transform-an-asset","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"transformAsset","tags":["Assets"],"summary":"Transform an asset","description":"Makes a free Derived copy of an asset from a recipe: a frame from a video, or a cropped, resized or converted image, or a trimmed, cropped, despilled, LUT-graded, resized or converted video. The work runs in the background, so this returns a run; its output's asset is the copy. It needs `runs:read` as well as `runs:create`, because it returns the run. Send `Prefer: wait=N` to hold the response until it ends. Your earlier run of the same recipe on this asset for the same destination returns with `reused` true instead of running again, unless it failed. New runs count toward the running caps. A test key can't transform assets.\n\nNeeds the `runs:create` and `runs:read` scopes.","parameters":["d02d3328-6496-4a71-b4d6-d10ced4f265c","8e3d1271-2a9c-4f41-bb3f-383df0b12eab","86042ab0-6877-4956-9ec5-4c2f3ef8e987"],"requestBody":"da98b93c-faa9-451c-ada5-26f1cc62a6f0","responses":{"200":"ad8f9f15-9ab9-46b5-9eec-46ee2d29f77a","202":"09e00629-944c-4532-b94d-db99b7acb7e4","400":"89e22e84-6f38-47d2-ab17-6d6ec3661ae3","401":"ba79d841-71df-412c-b7af-83f1d0cab969","403":"a59ef652-3dc0-44a3-8130-caed615d0e84","404":"937149be-6061-4c45-af06-5646bc3d9439","409":"f15249fe-b1be-48d2-a625-6e1efade0484","413":"c02e9784-bf3d-4389-9070-e8c24255af69","415":"81ecd2f2-5443-40ca-9358-9d5c4108353e","429":"50f0503b-a96f-44c2-86ca-a7a183c3f71f","500":"658c7b4d-b1bd-4ea9-8cc8-a512ecd1ff73","503":"0b934929-d0ea-4e63-8f89-953af046cfe4"},"method":"post","type":"path","servers":["e4c5630c-9eaf-4cb3-9832-e9363495e9e8"],"security":["d3bf9985-c20e-4e73-9d98-1d5df07ad407"],"path":"/assets/{assetId}/transform","baseUrlOptions":["https://api.zerogen.com/v1"],"title":"Transform an asset","codeSamples":[],"requestExampleLanguages":["bash","javascript","python"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"d02d3328-6496-4a71-b4d6-d10ced4f265c":{"name":"assetId","in":"path","required":true,"description":"The asset's ID","schema":{"type":"string","isRequired":true,"description":"The asset's ID","uniqueKey":"","typeLabel":"string"}},"8e3d1271-2a9c-4f41-bb3f-383df0b12eab":{"name":"Idempotency-Key","in":"header","required":false,"description":"Makes retries safe: a retry with the same key and body returns the first response for 24 hours instead of repeating the work. Reusing a key with a different body returns 409.","schema":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[\\x21-\\x7e]+$","isRequired":false,"description":"Makes retries safe: a retry with the same key and body returns the first response for 24 hours instead of repeating the work. Reusing a key with a different body returns 409.","uniqueKey":"","typeLabel":"string"}},"86042ab0-6877-4956-9ec5-4c2f3ef8e987":{"name":"Prefer","in":"header","required":false,"description":"wait=N holds the response up to N seconds (at most 60) until the run ends.","schema":{"type":"string","pattern":"^wait=\\d+$","example":"wait=30","isRequired":false,"description":"wait=N holds the response up to N seconds (at most 60) until the run ends.","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"recipe":{"oneOf":[{"type":"object","description":"Take one full-resolution frame from a video as a PNG.","required":["extractFrame"],"properties":{"extractFrame":{"type":"object","properties":{"timeSeconds":{"type":"number","minimum":0,"description":"Where to take the frame, in seconds from the start of the video","isRequired":true,"uniqueKey":"recipe.oneOf.0.extractFrame.timeSeconds","typeLabel":"number"}},"required":["timeSeconds"],"additionalProperties":false,"isRequired":true,"uniqueKey":"recipe.oneOf.0.extractFrame","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"recipe.oneOf.0","typeLabel":"object"},{"type":"object","description":"Crop a still image, downscale it, convert it to PNG, JPEG or WebP, or a combination, in that order. Colors become sRGB and embedded metadata is removed.","required":["crop"],"properties":{"crop":{"description":"Keep this area of the upright image, within its width and height","type":"object","properties":{"x":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Pixels from the picture's left edge to the area's","isRequired":true,"uniqueKey":"recipe.oneOf.1.crop.x","typeLabel":"integer"},"y":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Pixels from the picture's top edge to the area's","isRequired":true,"uniqueKey":"recipe.oneOf.1.crop.y","typeLabel":"integer"},"width":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"The area's width, in pixels","isRequired":true,"uniqueKey":"recipe.oneOf.1.crop.width","typeLabel":"integer"},"height":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"The area's height, in pixels","isRequired":true,"uniqueKey":"recipe.oneOf.1.crop.height","typeLabel":"integer"}},"required":["x","y","width","height"],"additionalProperties":false,"isRequired":true,"uniqueKey":"recipe.oneOf.1.crop","typeLabel":"object"},"resize":{"type":"object","properties":{"maxEdge":{"type":"integer","minimum":1,"maximum":16384,"description":"Scale down proportionally so the longest edge is at most this many pixels; never enlarges","isRequired":true,"uniqueKey":"recipe.oneOf.1.resize.maxEdge","typeLabel":"integer"}},"required":["maxEdge"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.1.resize","typeLabel":"object"},"convert":{"type":"object","properties":{"format":{"type":"string","enum":["png","jpeg","webp"],"isRequired":true,"uniqueKey":"recipe.oneOf.1.convert.format","typeLabel":"enum\u003cstring>"},"quality":{"description":"jpeg and webp only; default 90. An image already in the asked format that needs no resize is copied unchanged, so quality applies only when it is re-encoded","type":"integer","minimum":1,"maximum":100,"uniqueKey":"recipe.oneOf.1.convert.quality","typeLabel":"integer"},"background":{"description":"jpeg only: the color that replaces transparency, such as #ffffff","type":"string","pattern":"^#[0-9a-f]{6}$","uniqueKey":"recipe.oneOf.1.convert.background","typeLabel":"string"}},"required":["format"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.1.convert","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"recipe.oneOf.1","typeLabel":"object"},{"type":"object","description":"Crop a still image, downscale it, convert it to PNG, JPEG or WebP, or a combination, in that order. Colors become sRGB and embedded metadata is removed.","required":["resize"],"properties":{"resize":{"type":"object","properties":{"maxEdge":{"type":"integer","minimum":1,"maximum":16384,"description":"Scale down proportionally so the longest edge is at most this many pixels; never enlarges","isRequired":true,"uniqueKey":"recipe.oneOf.2.resize.maxEdge","typeLabel":"integer"}},"required":["maxEdge"],"additionalProperties":false,"isRequired":true,"uniqueKey":"recipe.oneOf.2.resize","typeLabel":"object"},"crop":{"description":"Keep this area of the upright image, within its width and height","type":"object","properties":{"x":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Pixels from the picture's left edge to the area's","isRequired":true,"uniqueKey":"recipe.oneOf.2.crop.x","typeLabel":"integer"},"y":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Pixels from the picture's top edge to the area's","isRequired":true,"uniqueKey":"recipe.oneOf.2.crop.y","typeLabel":"integer"},"width":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"The area's width, in pixels","isRequired":true,"uniqueKey":"recipe.oneOf.2.crop.width","typeLabel":"integer"},"height":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"The area's height, in pixels","isRequired":true,"uniqueKey":"recipe.oneOf.2.crop.height","typeLabel":"integer"}},"required":["x","y","width","height"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.2.crop","typeLabel":"object"},"convert":{"type":"object","properties":{"format":{"type":"string","enum":["png","jpeg","webp"],"isRequired":true,"uniqueKey":"recipe.oneOf.2.convert.format","typeLabel":"enum\u003cstring>"},"quality":{"description":"jpeg and webp only; default 90. An image already in the asked format that needs no resize is copied unchanged, so quality applies only when it is re-encoded","type":"integer","minimum":1,"maximum":100,"uniqueKey":"recipe.oneOf.2.convert.quality","typeLabel":"integer"},"background":{"description":"jpeg only: the color that replaces transparency, such as #ffffff","type":"string","pattern":"^#[0-9a-f]{6}$","uniqueKey":"recipe.oneOf.2.convert.background","typeLabel":"string"}},"required":["format"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.2.convert","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"recipe.oneOf.2","typeLabel":"object"},{"type":"object","description":"Crop a still image, downscale it, convert it to PNG, JPEG or WebP, or a combination, in that order. Colors become sRGB and embedded metadata is removed.","required":["convert"],"properties":{"convert":{"type":"object","properties":{"format":{"type":"string","enum":["png","jpeg","webp"],"isRequired":true,"uniqueKey":"recipe.oneOf.3.convert.format","typeLabel":"enum\u003cstring>"},"quality":{"description":"jpeg and webp only; default 90. An image already in the asked format that needs no resize is copied unchanged, so quality applies only when it is re-encoded","type":"integer","minimum":1,"maximum":100,"uniqueKey":"recipe.oneOf.3.convert.quality","typeLabel":"integer"},"background":{"description":"jpeg only: the color that replaces transparency, such as #ffffff","type":"string","pattern":"^#[0-9a-f]{6}$","uniqueKey":"recipe.oneOf.3.convert.background","typeLabel":"string"}},"required":["format"],"additionalProperties":false,"isRequired":true,"uniqueKey":"recipe.oneOf.3.convert","typeLabel":"object"},"crop":{"description":"Keep this area of the upright image, within its width and height","type":"object","properties":{"x":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Pixels from the picture's left edge to the area's","isRequired":true,"uniqueKey":"recipe.oneOf.3.crop.x","typeLabel":"integer"},"y":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Pixels from the picture's top edge to the area's","isRequired":true,"uniqueKey":"recipe.oneOf.3.crop.y","typeLabel":"integer"},"width":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"The area's width, in pixels","isRequired":true,"uniqueKey":"recipe.oneOf.3.crop.width","typeLabel":"integer"},"height":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"The area's height, in pixels","isRequired":true,"uniqueKey":"recipe.oneOf.3.crop.height","typeLabel":"integer"}},"required":["x","y","width","height"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.3.crop","typeLabel":"object"},"resize":{"type":"object","properties":{"maxEdge":{"type":"integer","minimum":1,"maximum":16384,"description":"Scale down proportionally so the longest edge is at most this many pixels; never enlarges","isRequired":true,"uniqueKey":"recipe.oneOf.3.resize.maxEdge","typeLabel":"integer"}},"required":["maxEdge"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.3.resize","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"recipe.oneOf.3","typeLabel":"object"},{"type":"object","description":"Trim a video, crop it, despill it, apply a LUT, adjust its color, downscale it, or convert it, in that order, to a copy of at most 30 seconds, an MP4 unless convert says mov. An MP4 makes ProRes, 4:4:4 and HDR sources 8-bit SDR 4:2:0 and brings frame rates within 24 to 60. Despill, a LUT and adjust refuse an HDR source; convert it to MP4 first and use that copy.","required":["trim"],"properties":{"trim":{"type":"object","properties":{"startSeconds":{"type":"number","minimum":0,"description":"Where the copy starts, in seconds","isRequired":true,"uniqueKey":"recipe.oneOf.4.trim.startSeconds","typeLabel":"number"},"endSeconds":{"type":"number","exclusiveMinimum":0,"description":"Where it ends, in seconds; at most 30 after startSeconds and within the video","isRequired":true,"uniqueKey":"recipe.oneOf.4.trim.endSeconds","typeLabel":"number"}},"required":["startSeconds","endSeconds"],"additionalProperties":false,"isRequired":true,"uniqueKey":"recipe.oneOf.4.trim","typeLabel":"object"},"crop":{"description":"Keep this area of the upright picture, within its width and height. Each number rounds down to an even one, which video needs","type":"object","properties":{"x":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Pixels from the picture's left edge to the area's","isRequired":true,"uniqueKey":"recipe.oneOf.4.crop.x","typeLabel":"integer"},"y":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Pixels from the picture's top edge to the area's","isRequired":true,"uniqueKey":"recipe.oneOf.4.crop.y","typeLabel":"integer"},"width":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"The area's width, in pixels","isRequired":true,"uniqueKey":"recipe.oneOf.4.crop.width","typeLabel":"integer"},"height":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"The area's height, in pixels","isRequired":true,"uniqueKey":"recipe.oneOf.4.crop.height","typeLabel":"integer"}},"required":["x","y","width","height"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.4.crop","typeLabel":"object"},"inputColor":{"description":"What the footage is, which its metadata can't tell, so ask rather than guess. With it, adjust's exposure, temperature and tint run before any LUT on its curve and gamut, which can recover what the LUT would clip; without it, after","type":"string","enum":["rec709","slog3-sgamut3cine","slog3-sgamut3","apple-log","logc3","logc4","vlog","clog2","clog3","bmd-film"],"uniqueKey":"recipe.oneOf.4.inputColor","typeLabel":"enum\u003cstring>"},"despill":{"description":"Remove screen-colored spill from a green- or blue-screen shot, before any LUT. It changes every pixel of that color, so use it only on screen footage. The screen stays, turned neutral; this does not key it out","type":"object","properties":{"screen":{"type":"string","enum":["green","blue"],"description":"The screen color to remove from the subject","isRequired":true,"uniqueKey":"recipe.oneOf.4.despill.screen","typeLabel":"enum\u003cstring>"}},"required":["screen"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.4.despill","typeLabel":"object"},"lut":{"description":"Apply a LUT. Use one whose inputColor matches the footage: a log LUT on Rec.709 footage looks wrong, and footage metadata can't tell. The copy is tagged Rec.709","type":"object","properties":{"lutId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"A LUT from this organization","isRequired":true,"uniqueKey":"recipe.oneOf.4.lut.lutId","typeLabel":"string\u003cuuid>"},"strength":{"description":"How much of the LUT to apply, as a percent; default 100","type":"integer","minimum":1,"maximum":100,"uniqueKey":"recipe.oneOf.4.lut.strength","typeLabel":"integer"}},"required":["lutId"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.4.lut","typeLabel":"object"},"adjust":{"description":"Basic color correction, after any LUT, so it trims what the LUT gave. Each is a whole number from -100 to 100; 0 changes nothing","type":"object","properties":{"exposure":{"description":"-100 is two stops darker, 100 two stops brighter; highlights can clip","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.4.adjust.exposure","typeLabel":"integer"},"brightness":{"description":"Moves the midtones; black and white stay where they are","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.4.adjust.brightness","typeLabel":"integer"},"contrast":{"description":"-100 halves the contrast around mid gray, 100 doubles it","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.4.adjust.contrast","typeLabel":"integer"},"saturation":{"description":"-100 is black and white, 100 doubles the saturation","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.4.adjust.saturation","typeLabel":"integer"},"temperature":{"description":"Below 0 is cooler, above 0 warmer","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.4.adjust.temperature","typeLabel":"integer"},"tint":{"description":"Below 0 is greener, above 0 more magenta","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.4.adjust.tint","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"recipe.oneOf.4.adjust","typeLabel":"object"},"resize":{"type":"object","properties":{"maxEdge":{"type":"integer","minimum":16,"maximum":4096,"description":"Scale down proportionally so the longest edge is at most this many pixels; never enlarges","isRequired":true,"uniqueKey":"recipe.oneOf.4.resize.maxEdge","typeLabel":"integer"}},"required":["maxEdge"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.4.resize","typeLabel":"object"},"convert":{"type":"object","properties":{"format":{"type":"string","enum":["mp4","mov"],"description":"mp4: H.264 8-bit 4:2:0, which every model and browser takes. mov: HEVC that keeps the source's 10-bit depth, 4:4:4 chroma, HDR and frame rate, for editing rather than as a model reference","isRequired":true,"uniqueKey":"recipe.oneOf.4.convert.format","typeLabel":"enum\u003cstring>"}},"required":["format"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.4.convert","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"recipe.oneOf.4","typeLabel":"object"},{"type":"object","description":"Trim a video, crop it, despill it, apply a LUT, adjust its color, downscale it, or convert it, in that order, to a copy of at most 30 seconds, an MP4 unless convert says mov. An MP4 makes ProRes, 4:4:4 and HDR sources 8-bit SDR 4:2:0 and brings frame rates within 24 to 60. Despill, a LUT and adjust refuse an HDR source; convert it to MP4 first and use that copy.","required":["crop"],"properties":{"crop":{"description":"Keep this area of the upright picture, within its width and height. Each number rounds down to an even one, which video needs","type":"object","properties":{"x":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Pixels from the picture's left edge to the area's","isRequired":true,"uniqueKey":"recipe.oneOf.5.crop.x","typeLabel":"integer"},"y":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Pixels from the picture's top edge to the area's","isRequired":true,"uniqueKey":"recipe.oneOf.5.crop.y","typeLabel":"integer"},"width":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"The area's width, in pixels","isRequired":true,"uniqueKey":"recipe.oneOf.5.crop.width","typeLabel":"integer"},"height":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"The area's height, in pixels","isRequired":true,"uniqueKey":"recipe.oneOf.5.crop.height","typeLabel":"integer"}},"required":["x","y","width","height"],"additionalProperties":false,"isRequired":true,"uniqueKey":"recipe.oneOf.5.crop","typeLabel":"object"},"trim":{"type":"object","properties":{"startSeconds":{"type":"number","minimum":0,"description":"Where the copy starts, in seconds","isRequired":true,"uniqueKey":"recipe.oneOf.5.trim.startSeconds","typeLabel":"number"},"endSeconds":{"type":"number","exclusiveMinimum":0,"description":"Where it ends, in seconds; at most 30 after startSeconds and within the video","isRequired":true,"uniqueKey":"recipe.oneOf.5.trim.endSeconds","typeLabel":"number"}},"required":["startSeconds","endSeconds"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.5.trim","typeLabel":"object"},"inputColor":{"description":"What the footage is, which its metadata can't tell, so ask rather than guess. With it, adjust's exposure, temperature and tint run before any LUT on its curve and gamut, which can recover what the LUT would clip; without it, after","type":"string","enum":["rec709","slog3-sgamut3cine","slog3-sgamut3","apple-log","logc3","logc4","vlog","clog2","clog3","bmd-film"],"uniqueKey":"recipe.oneOf.5.inputColor","typeLabel":"enum\u003cstring>"},"despill":{"description":"Remove screen-colored spill from a green- or blue-screen shot, before any LUT. It changes every pixel of that color, so use it only on screen footage. The screen stays, turned neutral; this does not key it out","type":"object","properties":{"screen":{"type":"string","enum":["green","blue"],"description":"The screen color to remove from the subject","isRequired":true,"uniqueKey":"recipe.oneOf.5.despill.screen","typeLabel":"enum\u003cstring>"}},"required":["screen"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.5.despill","typeLabel":"object"},"lut":{"description":"Apply a LUT. Use one whose inputColor matches the footage: a log LUT on Rec.709 footage looks wrong, and footage metadata can't tell. The copy is tagged Rec.709","type":"object","properties":{"lutId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"A LUT from this organization","isRequired":true,"uniqueKey":"recipe.oneOf.5.lut.lutId","typeLabel":"string\u003cuuid>"},"strength":{"description":"How much of the LUT to apply, as a percent; default 100","type":"integer","minimum":1,"maximum":100,"uniqueKey":"recipe.oneOf.5.lut.strength","typeLabel":"integer"}},"required":["lutId"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.5.lut","typeLabel":"object"},"adjust":{"description":"Basic color correction, after any LUT, so it trims what the LUT gave. Each is a whole number from -100 to 100; 0 changes nothing","type":"object","properties":{"exposure":{"description":"-100 is two stops darker, 100 two stops brighter; highlights can clip","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.5.adjust.exposure","typeLabel":"integer"},"brightness":{"description":"Moves the midtones; black and white stay where they are","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.5.adjust.brightness","typeLabel":"integer"},"contrast":{"description":"-100 halves the contrast around mid gray, 100 doubles it","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.5.adjust.contrast","typeLabel":"integer"},"saturation":{"description":"-100 is black and white, 100 doubles the saturation","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.5.adjust.saturation","typeLabel":"integer"},"temperature":{"description":"Below 0 is cooler, above 0 warmer","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.5.adjust.temperature","typeLabel":"integer"},"tint":{"description":"Below 0 is greener, above 0 more magenta","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.5.adjust.tint","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"recipe.oneOf.5.adjust","typeLabel":"object"},"resize":{"type":"object","properties":{"maxEdge":{"type":"integer","minimum":16,"maximum":4096,"description":"Scale down proportionally so the longest edge is at most this many pixels; never enlarges","isRequired":true,"uniqueKey":"recipe.oneOf.5.resize.maxEdge","typeLabel":"integer"}},"required":["maxEdge"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.5.resize","typeLabel":"object"},"convert":{"type":"object","properties":{"format":{"type":"string","enum":["mp4","mov"],"description":"mp4: H.264 8-bit 4:2:0, which every model and browser takes. mov: HEVC that keeps the source's 10-bit depth, 4:4:4 chroma, HDR and frame rate, for editing rather than as a model reference","isRequired":true,"uniqueKey":"recipe.oneOf.5.convert.format","typeLabel":"enum\u003cstring>"}},"required":["format"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.5.convert","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"recipe.oneOf.5","typeLabel":"object"},{"type":"object","description":"Trim a video, crop it, despill it, apply a LUT, adjust its color, downscale it, or convert it, in that order, to a copy of at most 30 seconds, an MP4 unless convert says mov. An MP4 makes ProRes, 4:4:4 and HDR sources 8-bit SDR 4:2:0 and brings frame rates within 24 to 60. Despill, a LUT and adjust refuse an HDR source; convert it to MP4 first and use that copy.","required":["despill"],"properties":{"despill":{"description":"Remove screen-colored spill from a green- or blue-screen shot, before any LUT. It changes every pixel of that color, so use it only on screen footage. The screen stays, turned neutral; this does not key it out","type":"object","properties":{"screen":{"type":"string","enum":["green","blue"],"description":"The screen color to remove from the subject","isRequired":true,"uniqueKey":"recipe.oneOf.6.despill.screen","typeLabel":"enum\u003cstring>"}},"required":["screen"],"additionalProperties":false,"isRequired":true,"uniqueKey":"recipe.oneOf.6.despill","typeLabel":"object"},"trim":{"type":"object","properties":{"startSeconds":{"type":"number","minimum":0,"description":"Where the copy starts, in seconds","isRequired":true,"uniqueKey":"recipe.oneOf.6.trim.startSeconds","typeLabel":"number"},"endSeconds":{"type":"number","exclusiveMinimum":0,"description":"Where it ends, in seconds; at most 30 after startSeconds and within the video","isRequired":true,"uniqueKey":"recipe.oneOf.6.trim.endSeconds","typeLabel":"number"}},"required":["startSeconds","endSeconds"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.6.trim","typeLabel":"object"},"crop":{"description":"Keep this area of the upright picture, within its width and height. Each number rounds down to an even one, which video needs","type":"object","properties":{"x":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Pixels from the picture's left edge to the area's","isRequired":true,"uniqueKey":"recipe.oneOf.6.crop.x","typeLabel":"integer"},"y":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Pixels from the picture's top edge to the area's","isRequired":true,"uniqueKey":"recipe.oneOf.6.crop.y","typeLabel":"integer"},"width":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"The area's width, in pixels","isRequired":true,"uniqueKey":"recipe.oneOf.6.crop.width","typeLabel":"integer"},"height":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"The area's height, in pixels","isRequired":true,"uniqueKey":"recipe.oneOf.6.crop.height","typeLabel":"integer"}},"required":["x","y","width","height"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.6.crop","typeLabel":"object"},"inputColor":{"description":"What the footage is, which its metadata can't tell, so ask rather than guess. With it, adjust's exposure, temperature and tint run before any LUT on its curve and gamut, which can recover what the LUT would clip; without it, after","type":"string","enum":["rec709","slog3-sgamut3cine","slog3-sgamut3","apple-log","logc3","logc4","vlog","clog2","clog3","bmd-film"],"uniqueKey":"recipe.oneOf.6.inputColor","typeLabel":"enum\u003cstring>"},"lut":{"description":"Apply a LUT. Use one whose inputColor matches the footage: a log LUT on Rec.709 footage looks wrong, and footage metadata can't tell. The copy is tagged Rec.709","type":"object","properties":{"lutId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"A LUT from this organization","isRequired":true,"uniqueKey":"recipe.oneOf.6.lut.lutId","typeLabel":"string\u003cuuid>"},"strength":{"description":"How much of the LUT to apply, as a percent; default 100","type":"integer","minimum":1,"maximum":100,"uniqueKey":"recipe.oneOf.6.lut.strength","typeLabel":"integer"}},"required":["lutId"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.6.lut","typeLabel":"object"},"adjust":{"description":"Basic color correction, after any LUT, so it trims what the LUT gave. Each is a whole number from -100 to 100; 0 changes nothing","type":"object","properties":{"exposure":{"description":"-100 is two stops darker, 100 two stops brighter; highlights can clip","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.6.adjust.exposure","typeLabel":"integer"},"brightness":{"description":"Moves the midtones; black and white stay where they are","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.6.adjust.brightness","typeLabel":"integer"},"contrast":{"description":"-100 halves the contrast around mid gray, 100 doubles it","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.6.adjust.contrast","typeLabel":"integer"},"saturation":{"description":"-100 is black and white, 100 doubles the saturation","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.6.adjust.saturation","typeLabel":"integer"},"temperature":{"description":"Below 0 is cooler, above 0 warmer","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.6.adjust.temperature","typeLabel":"integer"},"tint":{"description":"Below 0 is greener, above 0 more magenta","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.6.adjust.tint","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"recipe.oneOf.6.adjust","typeLabel":"object"},"resize":{"type":"object","properties":{"maxEdge":{"type":"integer","minimum":16,"maximum":4096,"description":"Scale down proportionally so the longest edge is at most this many pixels; never enlarges","isRequired":true,"uniqueKey":"recipe.oneOf.6.resize.maxEdge","typeLabel":"integer"}},"required":["maxEdge"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.6.resize","typeLabel":"object"},"convert":{"type":"object","properties":{"format":{"type":"string","enum":["mp4","mov"],"description":"mp4: H.264 8-bit 4:2:0, which every model and browser takes. mov: HEVC that keeps the source's 10-bit depth, 4:4:4 chroma, HDR and frame rate, for editing rather than as a model reference","isRequired":true,"uniqueKey":"recipe.oneOf.6.convert.format","typeLabel":"enum\u003cstring>"}},"required":["format"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.6.convert","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"recipe.oneOf.6","typeLabel":"object"},{"type":"object","description":"Trim a video, crop it, despill it, apply a LUT, adjust its color, downscale it, or convert it, in that order, to a copy of at most 30 seconds, an MP4 unless convert says mov. An MP4 makes ProRes, 4:4:4 and HDR sources 8-bit SDR 4:2:0 and brings frame rates within 24 to 60. Despill, a LUT and adjust refuse an HDR source; convert it to MP4 first and use that copy.","required":["lut"],"properties":{"lut":{"description":"Apply a LUT. Use one whose inputColor matches the footage: a log LUT on Rec.709 footage looks wrong, and footage metadata can't tell. The copy is tagged Rec.709","type":"object","properties":{"lutId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"A LUT from this organization","isRequired":true,"uniqueKey":"recipe.oneOf.7.lut.lutId","typeLabel":"string\u003cuuid>"},"strength":{"description":"How much of the LUT to apply, as a percent; default 100","type":"integer","minimum":1,"maximum":100,"uniqueKey":"recipe.oneOf.7.lut.strength","typeLabel":"integer"}},"required":["lutId"],"additionalProperties":false,"isRequired":true,"uniqueKey":"recipe.oneOf.7.lut","typeLabel":"object"},"trim":{"type":"object","properties":{"startSeconds":{"type":"number","minimum":0,"description":"Where the copy starts, in seconds","isRequired":true,"uniqueKey":"recipe.oneOf.7.trim.startSeconds","typeLabel":"number"},"endSeconds":{"type":"number","exclusiveMinimum":0,"description":"Where it ends, in seconds; at most 30 after startSeconds and within the video","isRequired":true,"uniqueKey":"recipe.oneOf.7.trim.endSeconds","typeLabel":"number"}},"required":["startSeconds","endSeconds"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.7.trim","typeLabel":"object"},"crop":{"description":"Keep this area of the upright picture, within its width and height. Each number rounds down to an even one, which video needs","type":"object","properties":{"x":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Pixels from the picture's left edge to the area's","isRequired":true,"uniqueKey":"recipe.oneOf.7.crop.x","typeLabel":"integer"},"y":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Pixels from the picture's top edge to the area's","isRequired":true,"uniqueKey":"recipe.oneOf.7.crop.y","typeLabel":"integer"},"width":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"The area's width, in pixels","isRequired":true,"uniqueKey":"recipe.oneOf.7.crop.width","typeLabel":"integer"},"height":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"The area's height, in pixels","isRequired":true,"uniqueKey":"recipe.oneOf.7.crop.height","typeLabel":"integer"}},"required":["x","y","width","height"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.7.crop","typeLabel":"object"},"inputColor":{"description":"What the footage is, which its metadata can't tell, so ask rather than guess. With it, adjust's exposure, temperature and tint run before any LUT on its curve and gamut, which can recover what the LUT would clip; without it, after","type":"string","enum":["rec709","slog3-sgamut3cine","slog3-sgamut3","apple-log","logc3","logc4","vlog","clog2","clog3","bmd-film"],"uniqueKey":"recipe.oneOf.7.inputColor","typeLabel":"enum\u003cstring>"},"despill":{"description":"Remove screen-colored spill from a green- or blue-screen shot, before any LUT. It changes every pixel of that color, so use it only on screen footage. The screen stays, turned neutral; this does not key it out","type":"object","properties":{"screen":{"type":"string","enum":["green","blue"],"description":"The screen color to remove from the subject","isRequired":true,"uniqueKey":"recipe.oneOf.7.despill.screen","typeLabel":"enum\u003cstring>"}},"required":["screen"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.7.despill","typeLabel":"object"},"adjust":{"description":"Basic color correction, after any LUT, so it trims what the LUT gave. Each is a whole number from -100 to 100; 0 changes nothing","type":"object","properties":{"exposure":{"description":"-100 is two stops darker, 100 two stops brighter; highlights can clip","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.7.adjust.exposure","typeLabel":"integer"},"brightness":{"description":"Moves the midtones; black and white stay where they are","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.7.adjust.brightness","typeLabel":"integer"},"contrast":{"description":"-100 halves the contrast around mid gray, 100 doubles it","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.7.adjust.contrast","typeLabel":"integer"},"saturation":{"description":"-100 is black and white, 100 doubles the saturation","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.7.adjust.saturation","typeLabel":"integer"},"temperature":{"description":"Below 0 is cooler, above 0 warmer","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.7.adjust.temperature","typeLabel":"integer"},"tint":{"description":"Below 0 is greener, above 0 more magenta","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.7.adjust.tint","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"recipe.oneOf.7.adjust","typeLabel":"object"},"resize":{"type":"object","properties":{"maxEdge":{"type":"integer","minimum":16,"maximum":4096,"description":"Scale down proportionally so the longest edge is at most this many pixels; never enlarges","isRequired":true,"uniqueKey":"recipe.oneOf.7.resize.maxEdge","typeLabel":"integer"}},"required":["maxEdge"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.7.resize","typeLabel":"object"},"convert":{"type":"object","properties":{"format":{"type":"string","enum":["mp4","mov"],"description":"mp4: H.264 8-bit 4:2:0, which every model and browser takes. mov: HEVC that keeps the source's 10-bit depth, 4:4:4 chroma, HDR and frame rate, for editing rather than as a model reference","isRequired":true,"uniqueKey":"recipe.oneOf.7.convert.format","typeLabel":"enum\u003cstring>"}},"required":["format"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.7.convert","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"recipe.oneOf.7","typeLabel":"object"},{"type":"object","description":"Trim a video, crop it, despill it, apply a LUT, adjust its color, downscale it, or convert it, in that order, to a copy of at most 30 seconds, an MP4 unless convert says mov. An MP4 makes ProRes, 4:4:4 and HDR sources 8-bit SDR 4:2:0 and brings frame rates within 24 to 60. Despill, a LUT and adjust refuse an HDR source; convert it to MP4 first and use that copy.","required":["adjust"],"properties":{"adjust":{"description":"Basic color correction, after any LUT, so it trims what the LUT gave. Each is a whole number from -100 to 100; 0 changes nothing","type":"object","properties":{"exposure":{"description":"-100 is two stops darker, 100 two stops brighter; highlights can clip","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.8.adjust.exposure","typeLabel":"integer"},"brightness":{"description":"Moves the midtones; black and white stay where they are","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.8.adjust.brightness","typeLabel":"integer"},"contrast":{"description":"-100 halves the contrast around mid gray, 100 doubles it","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.8.adjust.contrast","typeLabel":"integer"},"saturation":{"description":"-100 is black and white, 100 doubles the saturation","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.8.adjust.saturation","typeLabel":"integer"},"temperature":{"description":"Below 0 is cooler, above 0 warmer","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.8.adjust.temperature","typeLabel":"integer"},"tint":{"description":"Below 0 is greener, above 0 more magenta","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.8.adjust.tint","typeLabel":"integer"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"recipe.oneOf.8.adjust","typeLabel":"object"},"trim":{"type":"object","properties":{"startSeconds":{"type":"number","minimum":0,"description":"Where the copy starts, in seconds","isRequired":true,"uniqueKey":"recipe.oneOf.8.trim.startSeconds","typeLabel":"number"},"endSeconds":{"type":"number","exclusiveMinimum":0,"description":"Where it ends, in seconds; at most 30 after startSeconds and within the video","isRequired":true,"uniqueKey":"recipe.oneOf.8.trim.endSeconds","typeLabel":"number"}},"required":["startSeconds","endSeconds"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.8.trim","typeLabel":"object"},"crop":{"description":"Keep this area of the upright picture, within its width and height. Each number rounds down to an even one, which video needs","type":"object","properties":{"x":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Pixels from the picture's left edge to the area's","isRequired":true,"uniqueKey":"recipe.oneOf.8.crop.x","typeLabel":"integer"},"y":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Pixels from the picture's top edge to the area's","isRequired":true,"uniqueKey":"recipe.oneOf.8.crop.y","typeLabel":"integer"},"width":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"The area's width, in pixels","isRequired":true,"uniqueKey":"recipe.oneOf.8.crop.width","typeLabel":"integer"},"height":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"The area's height, in pixels","isRequired":true,"uniqueKey":"recipe.oneOf.8.crop.height","typeLabel":"integer"}},"required":["x","y","width","height"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.8.crop","typeLabel":"object"},"inputColor":{"description":"What the footage is, which its metadata can't tell, so ask rather than guess. With it, adjust's exposure, temperature and tint run before any LUT on its curve and gamut, which can recover what the LUT would clip; without it, after","type":"string","enum":["rec709","slog3-sgamut3cine","slog3-sgamut3","apple-log","logc3","logc4","vlog","clog2","clog3","bmd-film"],"uniqueKey":"recipe.oneOf.8.inputColor","typeLabel":"enum\u003cstring>"},"despill":{"description":"Remove screen-colored spill from a green- or blue-screen shot, before any LUT. It changes every pixel of that color, so use it only on screen footage. The screen stays, turned neutral; this does not key it out","type":"object","properties":{"screen":{"type":"string","enum":["green","blue"],"description":"The screen color to remove from the subject","isRequired":true,"uniqueKey":"recipe.oneOf.8.despill.screen","typeLabel":"enum\u003cstring>"}},"required":["screen"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.8.despill","typeLabel":"object"},"lut":{"description":"Apply a LUT. Use one whose inputColor matches the footage: a log LUT on Rec.709 footage looks wrong, and footage metadata can't tell. The copy is tagged Rec.709","type":"object","properties":{"lutId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"A LUT from this organization","isRequired":true,"uniqueKey":"recipe.oneOf.8.lut.lutId","typeLabel":"string\u003cuuid>"},"strength":{"description":"How much of the LUT to apply, as a percent; default 100","type":"integer","minimum":1,"maximum":100,"uniqueKey":"recipe.oneOf.8.lut.strength","typeLabel":"integer"}},"required":["lutId"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.8.lut","typeLabel":"object"},"resize":{"type":"object","properties":{"maxEdge":{"type":"integer","minimum":16,"maximum":4096,"description":"Scale down proportionally so the longest edge is at most this many pixels; never enlarges","isRequired":true,"uniqueKey":"recipe.oneOf.8.resize.maxEdge","typeLabel":"integer"}},"required":["maxEdge"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.8.resize","typeLabel":"object"},"convert":{"type":"object","properties":{"format":{"type":"string","enum":["mp4","mov"],"description":"mp4: H.264 8-bit 4:2:0, which every model and browser takes. mov: HEVC that keeps the source's 10-bit depth, 4:4:4 chroma, HDR and frame rate, for editing rather than as a model reference","isRequired":true,"uniqueKey":"recipe.oneOf.8.convert.format","typeLabel":"enum\u003cstring>"}},"required":["format"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.8.convert","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"recipe.oneOf.8","typeLabel":"object"},{"type":"object","description":"Trim a video, crop it, despill it, apply a LUT, adjust its color, downscale it, or convert it, in that order, to a copy of at most 30 seconds, an MP4 unless convert says mov. An MP4 makes ProRes, 4:4:4 and HDR sources 8-bit SDR 4:2:0 and brings frame rates within 24 to 60. Despill, a LUT and adjust refuse an HDR source; convert it to MP4 first and use that copy.","required":["resize"],"properties":{"resize":{"type":"object","properties":{"maxEdge":{"type":"integer","minimum":16,"maximum":4096,"description":"Scale down proportionally so the longest edge is at most this many pixels; never enlarges","isRequired":true,"uniqueKey":"recipe.oneOf.9.resize.maxEdge","typeLabel":"integer"}},"required":["maxEdge"],"additionalProperties":false,"isRequired":true,"uniqueKey":"recipe.oneOf.9.resize","typeLabel":"object"},"trim":{"type":"object","properties":{"startSeconds":{"type":"number","minimum":0,"description":"Where the copy starts, in seconds","isRequired":true,"uniqueKey":"recipe.oneOf.9.trim.startSeconds","typeLabel":"number"},"endSeconds":{"type":"number","exclusiveMinimum":0,"description":"Where it ends, in seconds; at most 30 after startSeconds and within the video","isRequired":true,"uniqueKey":"recipe.oneOf.9.trim.endSeconds","typeLabel":"number"}},"required":["startSeconds","endSeconds"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.9.trim","typeLabel":"object"},"crop":{"description":"Keep this area of the upright picture, within its width and height. Each number rounds down to an even one, which video needs","type":"object","properties":{"x":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Pixels from the picture's left edge to the area's","isRequired":true,"uniqueKey":"recipe.oneOf.9.crop.x","typeLabel":"integer"},"y":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Pixels from the picture's top edge to the area's","isRequired":true,"uniqueKey":"recipe.oneOf.9.crop.y","typeLabel":"integer"},"width":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"The area's width, in pixels","isRequired":true,"uniqueKey":"recipe.oneOf.9.crop.width","typeLabel":"integer"},"height":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"The area's height, in pixels","isRequired":true,"uniqueKey":"recipe.oneOf.9.crop.height","typeLabel":"integer"}},"required":["x","y","width","height"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.9.crop","typeLabel":"object"},"inputColor":{"description":"What the footage is, which its metadata can't tell, so ask rather than guess. With it, adjust's exposure, temperature and tint run before any LUT on its curve and gamut, which can recover what the LUT would clip; without it, after","type":"string","enum":["rec709","slog3-sgamut3cine","slog3-sgamut3","apple-log","logc3","logc4","vlog","clog2","clog3","bmd-film"],"uniqueKey":"recipe.oneOf.9.inputColor","typeLabel":"enum\u003cstring>"},"despill":{"description":"Remove screen-colored spill from a green- or blue-screen shot, before any LUT. It changes every pixel of that color, so use it only on screen footage. The screen stays, turned neutral; this does not key it out","type":"object","properties":{"screen":{"type":"string","enum":["green","blue"],"description":"The screen color to remove from the subject","isRequired":true,"uniqueKey":"recipe.oneOf.9.despill.screen","typeLabel":"enum\u003cstring>"}},"required":["screen"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.9.despill","typeLabel":"object"},"lut":{"description":"Apply a LUT. Use one whose inputColor matches the footage: a log LUT on Rec.709 footage looks wrong, and footage metadata can't tell. The copy is tagged Rec.709","type":"object","properties":{"lutId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"A LUT from this organization","isRequired":true,"uniqueKey":"recipe.oneOf.9.lut.lutId","typeLabel":"string\u003cuuid>"},"strength":{"description":"How much of the LUT to apply, as a percent; default 100","type":"integer","minimum":1,"maximum":100,"uniqueKey":"recipe.oneOf.9.lut.strength","typeLabel":"integer"}},"required":["lutId"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.9.lut","typeLabel":"object"},"adjust":{"description":"Basic color correction, after any LUT, so it trims what the LUT gave. Each is a whole number from -100 to 100; 0 changes nothing","type":"object","properties":{"exposure":{"description":"-100 is two stops darker, 100 two stops brighter; highlights can clip","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.9.adjust.exposure","typeLabel":"integer"},"brightness":{"description":"Moves the midtones; black and white stay where they are","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.9.adjust.brightness","typeLabel":"integer"},"contrast":{"description":"-100 halves the contrast around mid gray, 100 doubles it","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.9.adjust.contrast","typeLabel":"integer"},"saturation":{"description":"-100 is black and white, 100 doubles the saturation","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.9.adjust.saturation","typeLabel":"integer"},"temperature":{"description":"Below 0 is cooler, above 0 warmer","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.9.adjust.temperature","typeLabel":"integer"},"tint":{"description":"Below 0 is greener, above 0 more magenta","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.9.adjust.tint","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"recipe.oneOf.9.adjust","typeLabel":"object"},"convert":{"type":"object","properties":{"format":{"type":"string","enum":["mp4","mov"],"description":"mp4: H.264 8-bit 4:2:0, which every model and browser takes. mov: HEVC that keeps the source's 10-bit depth, 4:4:4 chroma, HDR and frame rate, for editing rather than as a model reference","isRequired":true,"uniqueKey":"recipe.oneOf.9.convert.format","typeLabel":"enum\u003cstring>"}},"required":["format"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.9.convert","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"recipe.oneOf.9","typeLabel":"object"},{"type":"object","description":"Trim a video, crop it, despill it, apply a LUT, adjust its color, downscale it, or convert it, in that order, to a copy of at most 30 seconds, an MP4 unless convert says mov. An MP4 makes ProRes, 4:4:4 and HDR sources 8-bit SDR 4:2:0 and brings frame rates within 24 to 60. Despill, a LUT and adjust refuse an HDR source; convert it to MP4 first and use that copy.","required":["convert"],"properties":{"convert":{"type":"object","properties":{"format":{"type":"string","enum":["mp4","mov"],"description":"mp4: H.264 8-bit 4:2:0, which every model and browser takes. mov: HEVC that keeps the source's 10-bit depth, 4:4:4 chroma, HDR and frame rate, for editing rather than as a model reference","isRequired":true,"uniqueKey":"recipe.oneOf.10.convert.format","typeLabel":"enum\u003cstring>"}},"required":["format"],"additionalProperties":false,"isRequired":true,"uniqueKey":"recipe.oneOf.10.convert","typeLabel":"object"},"trim":{"type":"object","properties":{"startSeconds":{"type":"number","minimum":0,"description":"Where the copy starts, in seconds","isRequired":true,"uniqueKey":"recipe.oneOf.10.trim.startSeconds","typeLabel":"number"},"endSeconds":{"type":"number","exclusiveMinimum":0,"description":"Where it ends, in seconds; at most 30 after startSeconds and within the video","isRequired":true,"uniqueKey":"recipe.oneOf.10.trim.endSeconds","typeLabel":"number"}},"required":["startSeconds","endSeconds"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.10.trim","typeLabel":"object"},"crop":{"description":"Keep this area of the upright picture, within its width and height. Each number rounds down to an even one, which video needs","type":"object","properties":{"x":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Pixels from the picture's left edge to the area's","isRequired":true,"uniqueKey":"recipe.oneOf.10.crop.x","typeLabel":"integer"},"y":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Pixels from the picture's top edge to the area's","isRequired":true,"uniqueKey":"recipe.oneOf.10.crop.y","typeLabel":"integer"},"width":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"The area's width, in pixels","isRequired":true,"uniqueKey":"recipe.oneOf.10.crop.width","typeLabel":"integer"},"height":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"The area's height, in pixels","isRequired":true,"uniqueKey":"recipe.oneOf.10.crop.height","typeLabel":"integer"}},"required":["x","y","width","height"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.10.crop","typeLabel":"object"},"inputColor":{"description":"What the footage is, which its metadata can't tell, so ask rather than guess. With it, adjust's exposure, temperature and tint run before any LUT on its curve and gamut, which can recover what the LUT would clip; without it, after","type":"string","enum":["rec709","slog3-sgamut3cine","slog3-sgamut3","apple-log","logc3","logc4","vlog","clog2","clog3","bmd-film"],"uniqueKey":"recipe.oneOf.10.inputColor","typeLabel":"enum\u003cstring>"},"despill":{"description":"Remove screen-colored spill from a green- or blue-screen shot, before any LUT. It changes every pixel of that color, so use it only on screen footage. The screen stays, turned neutral; this does not key it out","type":"object","properties":{"screen":{"type":"string","enum":["green","blue"],"description":"The screen color to remove from the subject","isRequired":true,"uniqueKey":"recipe.oneOf.10.despill.screen","typeLabel":"enum\u003cstring>"}},"required":["screen"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.10.despill","typeLabel":"object"},"lut":{"description":"Apply a LUT. Use one whose inputColor matches the footage: a log LUT on Rec.709 footage looks wrong, and footage metadata can't tell. The copy is tagged Rec.709","type":"object","properties":{"lutId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"A LUT from this organization","isRequired":true,"uniqueKey":"recipe.oneOf.10.lut.lutId","typeLabel":"string\u003cuuid>"},"strength":{"description":"How much of the LUT to apply, as a percent; default 100","type":"integer","minimum":1,"maximum":100,"uniqueKey":"recipe.oneOf.10.lut.strength","typeLabel":"integer"}},"required":["lutId"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.10.lut","typeLabel":"object"},"adjust":{"description":"Basic color correction, after any LUT, so it trims what the LUT gave. Each is a whole number from -100 to 100; 0 changes nothing","type":"object","properties":{"exposure":{"description":"-100 is two stops darker, 100 two stops brighter; highlights can clip","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.10.adjust.exposure","typeLabel":"integer"},"brightness":{"description":"Moves the midtones; black and white stay where they are","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.10.adjust.brightness","typeLabel":"integer"},"contrast":{"description":"-100 halves the contrast around mid gray, 100 doubles it","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.10.adjust.contrast","typeLabel":"integer"},"saturation":{"description":"-100 is black and white, 100 doubles the saturation","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.10.adjust.saturation","typeLabel":"integer"},"temperature":{"description":"Below 0 is cooler, above 0 warmer","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.10.adjust.temperature","typeLabel":"integer"},"tint":{"description":"Below 0 is greener, above 0 more magenta","type":"integer","minimum":-100,"maximum":100,"uniqueKey":"recipe.oneOf.10.adjust.tint","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"recipe.oneOf.10.adjust","typeLabel":"object"},"resize":{"type":"object","properties":{"maxEdge":{"type":"integer","minimum":16,"maximum":4096,"description":"Scale down proportionally so the longest edge is at most this many pixels; never enlarges","isRequired":true,"uniqueKey":"recipe.oneOf.10.resize.maxEdge","typeLabel":"integer"}},"required":["maxEdge"],"additionalProperties":false,"uniqueKey":"recipe.oneOf.10.resize","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"recipe.oneOf.10","typeLabel":"object"}],"isRequired":true,"uniqueKey":"recipe","typeLabel":"object"},"projectId":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$","description":"The project the copy goes into; the source asset's project when omitted","uniqueKey":"projectId","typeLabel":"string"},"folderId":{"oneOf":[{"type":"string","description":"A folder in that project to also add the copy to; null or omitted for Unfiled","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$","uniqueKey":"folderId.oneOf.0","typeLabel":"string"},{"type":"null","description":"A folder in that project to also add the copy to; null or omitted for Unfiled","uniqueKey":"folderId.oneOf.1","typeLabel":"null"}],"uniqueKey":"folderId","typeLabel":"string | null"}},"required":["recipe"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"example":{"recipe":{"trim":{"startSeconds":0,"endSeconds":5},"resize":{"maxEdge":1280}}},"examples":{"Example":{"title":"Example","value":{"recipe":{"trim":{"startSeconds":0,"endSeconds":5},"resize":{"maxEdge":1280}}}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"ad8f9f15-9ab9-46b5-9eec-46ee2d29f77a":{"description":"The run has ended, within the requested wait, or had already ended.","headers":{"Request-Id":{"description":"Identifies the request; quote it when contacting support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests the key may make in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Idempotent-Replayed":{"description":"true when this response replays an earlier request with the same Idempotency-Key.","schema":{"type":"string","enum":["true"]}},"Location":{"description":"Where to read the created resource.","schema":{"type":"string"}},"Preference-Applied":{"description":"The wait applied, such as wait=30.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"projectId":{"type":"string","description":"The project that holds the outputs","isRequired":true,"uniqueKey":"projectId","typeLabel":"string"},"model":{"oneOf":[{"type":"string","maxLength":200,"pattern":"^[a-z0-9]+(?:[.-][a-z0-9]+)*\\/[a-z0-9]+(?:[.-][a-z0-9]+)*\\/[a-z0-9]+(?:[.-][a-z0-9]+)*$","isRequired":true,"uniqueKey":"model.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"model.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"model","typeLabel":"string | null"},"modelVersion":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"modelVersion.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"modelVersion.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"modelVersion","typeLabel":"string | null"},"status":{"type":"string","enum":["queued","running","succeeded","partial","failed","cancelled"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"outputs":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"outputs.items.[INDEX].index","typeLabel":"integer"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled"],"isRequired":true,"uniqueKey":"outputs.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"asset":{"oneOf":[{"type":"object","required":["id","mimeType","width","height","durationMs","preview"],"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.id","typeLabel":"string"},"mimeType":{"type":"string","isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.mimeType","typeLabel":"string"},"width":{"oneOf":[{"type":"integer","maximum":9007199254740991,"minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.width.oneOf.0","typeLabel":"integer"},{"type":"null","isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.width.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.width","typeLabel":"integer | null"},"height":{"oneOf":[{"type":"integer","maximum":9007199254740991,"minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.height.oneOf.0","typeLabel":"integer"},{"type":"null","isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.height.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.height","typeLabel":"integer | null"},"durationMs":{"oneOf":[{"type":"integer","maximum":9007199254740991,"minimum":0,"isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.durationMs.oneOf.0","typeLabel":"integer"},{"type":"null","isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.durationMs.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.durationMs","typeLabel":"integer | null"},"preview":{"oneOf":[{"type":"object","description":"The asset's previews, or null until they're made after the asset is ready, and for assets with none, such as audio","required":["image96Url","image512Url","videoUrl","expiresAt"],"properties":{"image96Url":{"type":"string","description":"A WebP image up to 96 pixels wide","isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.preview.oneOf.0.image96Url","typeLabel":"string"},"image512Url":{"type":"string","description":"A WebP image up to 512 pixels wide","isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.preview.oneOf.0.image512Url","typeLabel":"string"},"videoUrl":{"oneOf":[{"description":"For a video, a silent WebM clip of its first six seconds, up to 854×480; null for other assets and until it's made","type":"string","isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.preview.oneOf.0.videoUrl.oneOf.0","typeLabel":"string"},{"description":"For a video, a silent WebM clip of its first six seconds, up to 854×480; null for other assets and until it's made","type":"null","isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.preview.oneOf.0.videoUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.preview.oneOf.0.videoUrl","typeLabel":"string | null"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","description":"When the URLs stop loading; read the asset or run again for new ones","isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.preview.oneOf.0.expiresAt","typeLabel":"string\u003cdate-time>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.preview.oneOf.0","typeLabel":"object"},{"type":"null","description":"The asset's previews, or null until they're made after the asset is ready, and for assets with none, such as audio","isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.preview.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.preview","typeLabel":"object | null"},"resourceUri":{"type":"string","description":"Where this transport's client reads the asset, such as an MCP resource","uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.resourceUri","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset","typeLabel":"object | null"},"error":{"oneOf":[{"type":"object","required":["code","message","retryable"],"properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,79}$","isRequired":true,"uniqueKey":"outputs.items.[INDEX].error.oneOf.0.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"outputs.items.[INDEX].error.oneOf.0.message","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"outputs.items.[INDEX].error.oneOf.0.retryable","typeLabel":"boolean"},"param":{"type":"string","uniqueKey":"outputs.items.[INDEX].error.oneOf.0.param","typeLabel":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}],"uniqueKey":"outputs.items.[INDEX].error.oneOf.0.details.additionalProperties","typeLabel":"any"},"uniqueKey":"outputs.items.[INDEX].error.oneOf.0.details","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"outputs.items.[INDEX].error.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"outputs.items.[INDEX].error.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"outputs.items.[INDEX].error","typeLabel":"object | null"},"warnings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"outputs.items.[INDEX].warnings.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"outputs.items.[INDEX].warnings.items.[INDEX].message","typeLabel":"string"}},"required":["code","message"],"additionalProperties":false,"uniqueKey":"outputs.items.[INDEX].warnings.items.[INDEX]","typeLabel":"object"},"description":"What the provider ignored, such as an unused reference","uniqueKey":"outputs.items.[INDEX].warnings","typeLabel":"object[]"},"draft":{"type":"object","properties":{"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","description":"When upscaling this output closes","isRequired":true,"uniqueKey":"outputs.items.[INDEX].draft.expiresAt","typeLabel":"string\u003cdate-time>"},"upscalable":{"type":"boolean","description":"A final can be requested now: unexpired, with no final in progress","isRequired":true,"uniqueKey":"outputs.items.[INDEX].draft.upscalable","typeLabel":"boolean"},"upscale":{"oneOf":[{"type":"string","description":"The newest final's state, or null when none was requested","enum":["upscaling","upscaled"],"isRequired":true,"uniqueKey":"outputs.items.[INDEX].draft.upscale.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"The newest final's state, or null when none was requested","isRequired":true,"uniqueKey":"outputs.items.[INDEX].draft.upscale.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"outputs.items.[INDEX].draft.upscale","typeLabel":"enum\u003cstring> | null"},"finalResolution":{"type":"string","description":"That final's resolution, one the model's draft control lists","uniqueKey":"outputs.items.[INDEX].draft.finalResolution","typeLabel":"string"},"finalAssetId":{"type":"string","description":"The newest finished final's asset","uniqueKey":"outputs.items.[INDEX].draft.finalAssetId","typeLabel":"string"}},"required":["expiresAt","upscalable","upscale"],"additionalProperties":false,"description":"A 480p Draft output; upscaling it makes a final with the same seed, at a resolution the model's draft control lists","uniqueKey":"outputs.items.[INDEX].draft","typeLabel":"object"}},"required":["index","status","asset","error"],"additionalProperties":false,"uniqueKey":"outputs.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"outputs","typeLabel":"object[]"},"error":{"oneOf":[{"type":"object","required":["code","message","retryable"],"properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,79}$","isRequired":true,"uniqueKey":"error.oneOf.0.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.oneOf.0.message","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.0.retryable","typeLabel":"boolean"},"param":{"type":"string","uniqueKey":"error.oneOf.0.param","typeLabel":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.oneOf.0.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.oneOf.0.details","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"error.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error","typeLabel":"object | null"},"billing":{"type":"object","properties":{"mode":{"type":"string","enum":["platform","byok","test"],"isRequired":true,"uniqueKey":"billing.mode","typeLabel":"enum\u003cstring>"},"state":{"oneOf":[{"type":"string","description":"held: an amount is reserved and nothing is charged yet; charged: chargedMicroUsd is the final charge; released: the hold ended with no charge; null: billing never admitted the run, so nothing was held or charged","enum":["held","charged","released"],"isRequired":true,"uniqueKey":"billing.state.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"held: an amount is reserved and nothing is charged yet; charged: chargedMicroUsd is the final charge; released: the hold ended with no charge; null: billing never admitted the run, so nothing was held or charged","isRequired":true,"uniqueKey":"billing.state.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"billing.state","typeLabel":"enum\u003cstring> | null"},"quotedMicroUsd":{"oneOf":[{"type":"integer","description":"Reserved maximum expected charge","maximum":9007199254740991,"minimum":0,"isRequired":true,"uniqueKey":"billing.quotedMicroUsd.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Reserved maximum expected charge","isRequired":true,"uniqueKey":"billing.quotedMicroUsd.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"billing.quotedMicroUsd","typeLabel":"integer | null"},"heldMicroUsd":{"oneOf":[{"type":"integer","description":"While held, the amount reserved now; it is never a charge","maximum":9007199254740991,"minimum":0,"isRequired":true,"uniqueKey":"billing.heldMicroUsd.oneOf.0","typeLabel":"integer"},{"type":"null","description":"While held, the amount reserved now; it is never a charge","isRequired":true,"uniqueKey":"billing.heldMicroUsd.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"billing.heldMicroUsd","typeLabel":"integer | null"},"chargedMicroUsd":{"oneOf":[{"type":"integer","description":"The final charge once charged, zero once released; it can rarely exceed the quote","maximum":9007199254740991,"minimum":0,"isRequired":true,"uniqueKey":"billing.chargedMicroUsd.oneOf.0","typeLabel":"integer"},{"type":"null","description":"The final charge once charged, zero once released; it can rarely exceed the quote","isRequired":true,"uniqueKey":"billing.chargedMicroUsd.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"billing.chargedMicroUsd","typeLabel":"integer | null"},"hold":{"type":"object","properties":{"state":{"type":"string","enum":["running","ended","needs_attention"],"description":"running: the run has not ended; ended: it ended and the hold is still pending; needs_attention: it has stayed pending 30 minutes after ending, or 24 hours after admission with no end recorded (endedAt then stays null), so ZeroGen is looking into it","isRequired":true,"uniqueKey":"billing.hold.state","typeLabel":"enum\u003cstring>"},"endedAt":{"oneOf":[{"type":"string","description":"When the run ended; null while it runs or when no end was recorded","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","isRequired":true,"uniqueKey":"billing.hold.endedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the run ended; null while it runs or when no end was recorded","isRequired":true,"uniqueKey":"billing.hold.endedAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"billing.hold.endedAt","typeLabel":"string\u003cdate-time> | null"}},"required":["state","endedAt"],"additionalProperties":false,"description":"While held, where the run stands. It reports facts, not what settlement will do","uniqueKey":"billing.hold","typeLabel":"object"}},"required":["mode","state","quotedMicroUsd","heldMicroUsd","chargedMicroUsd"],"additionalProperties":false,"isRequired":true,"uniqueKey":"billing","typeLabel":"object"},"createdBy":{"oneOf":[{"type":"object","description":"Who made it; null when ZeroGen recorded no one","required":["id","name"],"properties":{"id":{"type":"string","description":"The user's ID, as GET /v1/me returns the key's own","isRequired":true,"uniqueKey":"createdBy.oneOf.0.id","typeLabel":"string"},"name":{"oneOf":[{"description":"The name the person gave ZeroGen, or null; never an email address","type":"string","isRequired":true,"uniqueKey":"createdBy.oneOf.0.name.oneOf.0","typeLabel":"string"},{"description":"The name the person gave ZeroGen, or null; never an email address","type":"null","isRequired":true,"uniqueKey":"createdBy.oneOf.0.name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"createdBy.oneOf.0.name","typeLabel":"string | null"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"createdBy.oneOf.0","typeLabel":"object"},{"type":"null","description":"Who made it; null when ZeroGen recorded no one","isRequired":true,"uniqueKey":"createdBy.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"createdBy","typeLabel":"object | null"},"createdVia":{"oneOf":[{"type":"string","description":"Where it was made: web (the ZeroGen app), agent (ZeroGen's Agent), mcp (an MCP client) or api (an API key); null with createdBy","enum":["web","agent","mcp","api"],"isRequired":true,"uniqueKey":"createdVia.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Where it was made: web (the ZeroGen app), agent (ZeroGen's Agent), mcp (an MCP client) or api (an API key); null with createdBy","isRequired":true,"uniqueKey":"createdVia.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"createdVia","typeLabel":"enum\u003cstring> | null"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","isRequired":true,"uniqueKey":"createdAt","typeLabel":"string\u003cdate-time>"},"startedAt":{"oneOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","isRequired":true,"uniqueKey":"startedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","isRequired":true,"uniqueKey":"startedAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"startedAt","typeLabel":"string\u003cdate-time> | null"},"finishedAt":{"oneOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","isRequired":true,"uniqueKey":"finishedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","isRequired":true,"uniqueKey":"finishedAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"finishedAt","typeLabel":"string\u003cdate-time> | null"},"webUrl":{"oneOf":[{"description":"Opens Generate's review of the run's first ready output in ZeroGen, on your organization's host, after sign-in. null until an output is ready, and for test keys. It can change until the run ends","type":"string","isRequired":true,"uniqueKey":"webUrl.oneOf.0","typeLabel":"string"},{"description":"Opens Generate's review of the run's first ready output in ZeroGen, on your organization's host, after sign-in. null until an output is ready, and for test keys. It can change until the run ends","type":"null","isRequired":true,"uniqueKey":"webUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"webUrl","typeLabel":"string | null"},"reused":{"type":"boolean","description":"True when this is your earlier run of the same recipe on this asset for the same destination, finished or in progress, so no new work started","isRequired":true,"uniqueKey":"reused","typeLabel":"boolean"}},"required":["id","projectId","model","modelVersion","status","outputs","error","billing","createdBy","createdVia","createdAt","startedAt","finishedAt","webUrl","reused"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"\u003cstring>","projectId":"\u003cstring>","model":"\u003cstring>","modelVersion":"\u003cstring>","status":"queued","outputs":[{"index":4503599627370495,"status":"queued","asset":{"id":"\u003cstring>","mimeType":"\u003cstring>","width":4503599627370495,"height":4503599627370495,"durationMs":4503599627370495,"preview":{"image96Url":"\u003cstring>","image512Url":"\u003cstring>","videoUrl":"\u003cstring>","expiresAt":"2023-11-07T05:31:56Z"},"resourceUri":"\u003cstring>"},"error":{"code":"\u003cstring>","message":"\u003cstring>","retryable":true,"param":"\u003cstring>","details":{}},"warnings":[{"code":"\u003cstring>","message":"\u003cstring>"}],"draft":{"expiresAt":"2023-11-07T05:31:56Z","upscalable":true,"upscale":"upscaling","finalResolution":"\u003cstring>","finalAssetId":"\u003cstring>"}}],"error":{"code":"\u003cstring>","message":"\u003cstring>","retryable":true,"param":"\u003cstring>","details":{}},"billing":{"mode":"platform","state":"held","quotedMicroUsd":4503599627370495,"heldMicroUsd":4503599627370495,"chargedMicroUsd":4503599627370495,"hold":{"state":"running","endedAt":"2023-11-07T05:31:56Z"}},"createdBy":{"id":"\u003cstring>","name":"\u003cstring>"},"createdVia":"web","createdAt":"2023-11-07T05:31:56Z","startedAt":"2023-11-07T05:31:56Z","finishedAt":"2023-11-07T05:31:56Z","webUrl":"\u003cstring>","reused":true}}},"exampleType":"generated"}},"exampleType":"generated"},"09e00629-944c-4532-b94d-db99b7acb7e4":{"description":"The run has not ended yet.","headers":{"Request-Id":{"description":"Identifies the request; quote it when contacting support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests the key may make in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Idempotent-Replayed":{"description":"true when this response replays an earlier request with the same Idempotency-Key.","schema":{"type":"string","enum":["true"]}},"Location":{"description":"Where to read the created resource.","schema":{"type":"string"}},"Preference-Applied":{"description":"The wait applied, such as wait=30.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"projectId":{"type":"string","description":"The project that holds the outputs","isRequired":true,"uniqueKey":"projectId","typeLabel":"string"},"model":{"oneOf":[{"type":"string","maxLength":200,"pattern":"^[a-z0-9]+(?:[.-][a-z0-9]+)*\\/[a-z0-9]+(?:[.-][a-z0-9]+)*\\/[a-z0-9]+(?:[.-][a-z0-9]+)*$","isRequired":true,"uniqueKey":"model.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"model.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"model","typeLabel":"string | null"},"modelVersion":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"modelVersion.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"modelVersion.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"modelVersion","typeLabel":"string | null"},"status":{"type":"string","enum":["queued","running","succeeded","partial","failed","cancelled"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"outputs":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"outputs.items.[INDEX].index","typeLabel":"integer"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled"],"isRequired":true,"uniqueKey":"outputs.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"asset":{"oneOf":[{"type":"object","required":["id","mimeType","width","height","durationMs","preview"],"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.id","typeLabel":"string"},"mimeType":{"type":"string","isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.mimeType","typeLabel":"string"},"width":{"oneOf":[{"type":"integer","maximum":9007199254740991,"minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.width.oneOf.0","typeLabel":"integer"},{"type":"null","isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.width.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.width","typeLabel":"integer | null"},"height":{"oneOf":[{"type":"integer","maximum":9007199254740991,"minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.height.oneOf.0","typeLabel":"integer"},{"type":"null","isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.height.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.height","typeLabel":"integer | null"},"durationMs":{"oneOf":[{"type":"integer","maximum":9007199254740991,"minimum":0,"isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.durationMs.oneOf.0","typeLabel":"integer"},{"type":"null","isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.durationMs.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.durationMs","typeLabel":"integer | null"},"preview":{"oneOf":[{"type":"object","description":"The asset's previews, or null until they're made after the asset is ready, and for assets with none, such as audio","required":["image96Url","image512Url","videoUrl","expiresAt"],"properties":{"image96Url":{"type":"string","description":"A WebP image up to 96 pixels wide","isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.preview.oneOf.0.image96Url","typeLabel":"string"},"image512Url":{"type":"string","description":"A WebP image up to 512 pixels wide","isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.preview.oneOf.0.image512Url","typeLabel":"string"},"videoUrl":{"oneOf":[{"description":"For a video, a silent WebM clip of its first six seconds, up to 854×480; null for other assets and until it's made","type":"string","isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.preview.oneOf.0.videoUrl.oneOf.0","typeLabel":"string"},{"description":"For a video, a silent WebM clip of its first six seconds, up to 854×480; null for other assets and until it's made","type":"null","isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.preview.oneOf.0.videoUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.preview.oneOf.0.videoUrl","typeLabel":"string | null"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","description":"When the URLs stop loading; read the asset or run again for new ones","isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.preview.oneOf.0.expiresAt","typeLabel":"string\u003cdate-time>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.preview.oneOf.0","typeLabel":"object"},{"type":"null","description":"The asset's previews, or null until they're made after the asset is ready, and for assets with none, such as audio","isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.preview.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.preview","typeLabel":"object | null"},"resourceUri":{"type":"string","description":"Where this transport's client reads the asset, such as an MCP resource","uniqueKey":"outputs.items.[INDEX].asset.oneOf.0.resourceUri","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"outputs.items.[INDEX].asset","typeLabel":"object | null"},"error":{"oneOf":[{"type":"object","required":["code","message","retryable"],"properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,79}$","isRequired":true,"uniqueKey":"outputs.items.[INDEX].error.oneOf.0.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"outputs.items.[INDEX].error.oneOf.0.message","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"outputs.items.[INDEX].error.oneOf.0.retryable","typeLabel":"boolean"},"param":{"type":"string","uniqueKey":"outputs.items.[INDEX].error.oneOf.0.param","typeLabel":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}],"uniqueKey":"outputs.items.[INDEX].error.oneOf.0.details.additionalProperties","typeLabel":"any"},"uniqueKey":"outputs.items.[INDEX].error.oneOf.0.details","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"outputs.items.[INDEX].error.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"outputs.items.[INDEX].error.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"outputs.items.[INDEX].error","typeLabel":"object | null"},"warnings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"outputs.items.[INDEX].warnings.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"outputs.items.[INDEX].warnings.items.[INDEX].message","typeLabel":"string"}},"required":["code","message"],"additionalProperties":false,"uniqueKey":"outputs.items.[INDEX].warnings.items.[INDEX]","typeLabel":"object"},"description":"What the provider ignored, such as an unused reference","uniqueKey":"outputs.items.[INDEX].warnings","typeLabel":"object[]"},"draft":{"type":"object","properties":{"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","description":"When upscaling this output closes","isRequired":true,"uniqueKey":"outputs.items.[INDEX].draft.expiresAt","typeLabel":"string\u003cdate-time>"},"upscalable":{"type":"boolean","description":"A final can be requested now: unexpired, with no final in progress","isRequired":true,"uniqueKey":"outputs.items.[INDEX].draft.upscalable","typeLabel":"boolean"},"upscale":{"oneOf":[{"type":"string","description":"The newest final's state, or null when none was requested","enum":["upscaling","upscaled"],"isRequired":true,"uniqueKey":"outputs.items.[INDEX].draft.upscale.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"The newest final's state, or null when none was requested","isRequired":true,"uniqueKey":"outputs.items.[INDEX].draft.upscale.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"outputs.items.[INDEX].draft.upscale","typeLabel":"enum\u003cstring> | null"},"finalResolution":{"type":"string","description":"That final's resolution, one the model's draft control lists","uniqueKey":"outputs.items.[INDEX].draft.finalResolution","typeLabel":"string"},"finalAssetId":{"type":"string","description":"The newest finished final's asset","uniqueKey":"outputs.items.[INDEX].draft.finalAssetId","typeLabel":"string"}},"required":["expiresAt","upscalable","upscale"],"additionalProperties":false,"description":"A 480p Draft output; upscaling it makes a final with the same seed, at a resolution the model's draft control lists","uniqueKey":"outputs.items.[INDEX].draft","typeLabel":"object"}},"required":["index","status","asset","error"],"additionalProperties":false,"uniqueKey":"outputs.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"outputs","typeLabel":"object[]"},"error":{"oneOf":[{"type":"object","required":["code","message","retryable"],"properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,79}$","isRequired":true,"uniqueKey":"error.oneOf.0.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.oneOf.0.message","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.0.retryable","typeLabel":"boolean"},"param":{"type":"string","uniqueKey":"error.oneOf.0.param","typeLabel":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.oneOf.0.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.oneOf.0.details","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"error.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error","typeLabel":"object | null"},"billing":{"type":"object","properties":{"mode":{"type":"string","enum":["platform","byok","test"],"isRequired":true,"uniqueKey":"billing.mode","typeLabel":"enum\u003cstring>"},"state":{"oneOf":[{"type":"string","description":"held: an amount is reserved and nothing is charged yet; charged: chargedMicroUsd is the final charge; released: the hold ended with no charge; null: billing never admitted the run, so nothing was held or charged","enum":["held","charged","released"],"isRequired":true,"uniqueKey":"billing.state.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"held: an amount is reserved and nothing is charged yet; charged: chargedMicroUsd is the final charge; released: the hold ended with no charge; null: billing never admitted the run, so nothing was held or charged","isRequired":true,"uniqueKey":"billing.state.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"billing.state","typeLabel":"enum\u003cstring> | null"},"quotedMicroUsd":{"oneOf":[{"type":"integer","description":"Reserved maximum expected charge","maximum":9007199254740991,"minimum":0,"isRequired":true,"uniqueKey":"billing.quotedMicroUsd.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Reserved maximum expected charge","isRequired":true,"uniqueKey":"billing.quotedMicroUsd.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"billing.quotedMicroUsd","typeLabel":"integer | null"},"heldMicroUsd":{"oneOf":[{"type":"integer","description":"While held, the amount reserved now; it is never a charge","maximum":9007199254740991,"minimum":0,"isRequired":true,"uniqueKey":"billing.heldMicroUsd.oneOf.0","typeLabel":"integer"},{"type":"null","description":"While held, the amount reserved now; it is never a charge","isRequired":true,"uniqueKey":"billing.heldMicroUsd.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"billing.heldMicroUsd","typeLabel":"integer | null"},"chargedMicroUsd":{"oneOf":[{"type":"integer","description":"The final charge once charged, zero once released; it can rarely exceed the quote","maximum":9007199254740991,"minimum":0,"isRequired":true,"uniqueKey":"billing.chargedMicroUsd.oneOf.0","typeLabel":"integer"},{"type":"null","description":"The final charge once charged, zero once released; it can rarely exceed the quote","isRequired":true,"uniqueKey":"billing.chargedMicroUsd.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"billing.chargedMicroUsd","typeLabel":"integer | null"},"hold":{"type":"object","properties":{"state":{"type":"string","enum":["running","ended","needs_attention"],"description":"running: the run has not ended; ended: it ended and the hold is still pending; needs_attention: it has stayed pending 30 minutes after ending, or 24 hours after admission with no end recorded (endedAt then stays null), so ZeroGen is looking into it","isRequired":true,"uniqueKey":"billing.hold.state","typeLabel":"enum\u003cstring>"},"endedAt":{"oneOf":[{"type":"string","description":"When the run ended; null while it runs or when no end was recorded","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","isRequired":true,"uniqueKey":"billing.hold.endedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the run ended; null while it runs or when no end was recorded","isRequired":true,"uniqueKey":"billing.hold.endedAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"billing.hold.endedAt","typeLabel":"string\u003cdate-time> | null"}},"required":["state","endedAt"],"additionalProperties":false,"description":"While held, where the run stands. It reports facts, not what settlement will do","uniqueKey":"billing.hold","typeLabel":"object"}},"required":["mode","state","quotedMicroUsd","heldMicroUsd","chargedMicroUsd"],"additionalProperties":false,"isRequired":true,"uniqueKey":"billing","typeLabel":"object"},"createdBy":{"oneOf":[{"type":"object","description":"Who made it; null when ZeroGen recorded no one","required":["id","name"],"properties":{"id":{"type":"string","description":"The user's ID, as GET /v1/me returns the key's own","isRequired":true,"uniqueKey":"createdBy.oneOf.0.id","typeLabel":"string"},"name":{"oneOf":[{"description":"The name the person gave ZeroGen, or null; never an email address","type":"string","isRequired":true,"uniqueKey":"createdBy.oneOf.0.name.oneOf.0","typeLabel":"string"},{"description":"The name the person gave ZeroGen, or null; never an email address","type":"null","isRequired":true,"uniqueKey":"createdBy.oneOf.0.name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"createdBy.oneOf.0.name","typeLabel":"string | null"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"createdBy.oneOf.0","typeLabel":"object"},{"type":"null","description":"Who made it; null when ZeroGen recorded no one","isRequired":true,"uniqueKey":"createdBy.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"createdBy","typeLabel":"object | null"},"createdVia":{"oneOf":[{"type":"string","description":"Where it was made: web (the ZeroGen app), agent (ZeroGen's Agent), mcp (an MCP client) or api (an API key); null with createdBy","enum":["web","agent","mcp","api"],"isRequired":true,"uniqueKey":"createdVia.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Where it was made: web (the ZeroGen app), agent (ZeroGen's Agent), mcp (an MCP client) or api (an API key); null with createdBy","isRequired":true,"uniqueKey":"createdVia.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"createdVia","typeLabel":"enum\u003cstring> | null"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","isRequired":true,"uniqueKey":"createdAt","typeLabel":"string\u003cdate-time>"},"startedAt":{"oneOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","isRequired":true,"uniqueKey":"startedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","isRequired":true,"uniqueKey":"startedAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"startedAt","typeLabel":"string\u003cdate-time> | null"},"finishedAt":{"oneOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","isRequired":true,"uniqueKey":"finishedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","isRequired":true,"uniqueKey":"finishedAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"finishedAt","typeLabel":"string\u003cdate-time> | null"},"webUrl":{"oneOf":[{"description":"Opens Generate's review of the run's first ready output in ZeroGen, on your organization's host, after sign-in. null until an output is ready, and for test keys. It can change until the run ends","type":"string","isRequired":true,"uniqueKey":"webUrl.oneOf.0","typeLabel":"string"},{"description":"Opens Generate's review of the run's first ready output in ZeroGen, on your organization's host, after sign-in. null until an output is ready, and for test keys. It can change until the run ends","type":"null","isRequired":true,"uniqueKey":"webUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"webUrl","typeLabel":"string | null"},"reused":{"type":"boolean","description":"True when this is your earlier run of the same recipe on this asset for the same destination, finished or in progress, so no new work started","isRequired":true,"uniqueKey":"reused","typeLabel":"boolean"}},"required":["id","projectId","model","modelVersion","status","outputs","error","billing","createdBy","createdVia","createdAt","startedAt","finishedAt","webUrl","reused"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"\u003cstring>","projectId":"\u003cstring>","model":"\u003cstring>","modelVersion":"\u003cstring>","status":"queued","outputs":[{"index":4503599627370495,"status":"queued","asset":{"id":"\u003cstring>","mimeType":"\u003cstring>","width":4503599627370495,"height":4503599627370495,"durationMs":4503599627370495,"preview":{"image96Url":"\u003cstring>","image512Url":"\u003cstring>","videoUrl":"\u003cstring>","expiresAt":"2023-11-07T05:31:56Z"},"resourceUri":"\u003cstring>"},"error":{"code":"\u003cstring>","message":"\u003cstring>","retryable":true,"param":"\u003cstring>","details":{}},"warnings":[{"code":"\u003cstring>","message":"\u003cstring>"}],"draft":{"expiresAt":"2023-11-07T05:31:56Z","upscalable":true,"upscale":"upscaling","finalResolution":"\u003cstring>","finalAssetId":"\u003cstring>"}}],"error":{"code":"\u003cstring>","message":"\u003cstring>","retryable":true,"param":"\u003cstring>","details":{}},"billing":{"mode":"platform","state":"held","quotedMicroUsd":4503599627370495,"heldMicroUsd":4503599627370495,"chargedMicroUsd":4503599627370495,"hold":{"state":"running","endedAt":"2023-11-07T05:31:56Z"}},"createdBy":{"id":"\u003cstring>","name":"\u003cstring>"},"createdVia":"web","createdAt":"2023-11-07T05:31:56Z","startedAt":"2023-11-07T05:31:56Z","finishedAt":"2023-11-07T05:31:56Z","webUrl":"\u003cstring>","reused":true}}},"exampleType":"generated"}},"exampleType":"generated"},"89e22e84-6f38-47d2-ab17-6d6ec3661ae3":{"description":"The request is malformed or invalid: invalid_request, validation_failed, model_unavailable or input_import_failed.","headers":{"Request-Id":{"description":"Identifies the request; quote it when contacting support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests the key may make in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,79}$","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.retryable","typeLabel":"boolean"},"param":{"type":"string","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message","retryable"],"additionalProperties":false,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","retryable":true,"param":"\u003cstring>","details":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"ba79d841-71df-412c-b7af-83f1d0cab969":{"description":"invalid_api_key: the key is missing, revoked or expired.","headers":{"Request-Id":{"description":"Identifies the request; quote it when contacting support.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Bearer realm=\"ZeroGen API\".","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,79}$","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.retryable","typeLabel":"boolean"},"param":{"type":"string","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message","retryable"],"additionalProperties":false,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","retryable":true,"param":"\u003cstring>","details":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"a59ef652-3dc0-44a3-8130-caed615d0e84":{"description":"permission_denied: the key lacks the scope this endpoint needs, the request came from a browser, or the API isn't enabled for the organization.","headers":{"Request-Id":{"description":"Identifies the request; quote it when contacting support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests the key may make in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,79}$","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.retryable","typeLabel":"boolean"},"param":{"type":"string","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message","retryable"],"additionalProperties":false,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","retryable":true,"param":"\u003cstring>","details":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"937149be-6061-4c45-af06-5646bc3d9439":{"description":"not_found: no such resource for this caller, including a projectId the caller can't use.","headers":{"Request-Id":{"description":"Identifies the request; quote it when contacting support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests the key may make in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,79}$","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.retryable","typeLabel":"boolean"},"param":{"type":"string","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message","retryable"],"additionalProperties":false,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","retryable":true,"param":"\u003cstring>","details":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"f15249fe-b1be-48d2-a625-6e1efade0484":{"description":"idempotency_conflict: the Idempotency-Key was used for a different request. idempotency_in_progress: the first request with this key hasn't finished. invalid_state: the request can't go ahead as things stand, such as a run that needs a person's approval in ZeroGen.","headers":{"Request-Id":{"description":"Identifies the request; quote it when contacting support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests the key may make in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,79}$","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.retryable","typeLabel":"boolean"},"param":{"type":"string","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message","retryable"],"additionalProperties":false,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","retryable":true,"param":"\u003cstring>","details":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"c02e9784-bf3d-4389-9070-e8c24255af69":{"description":"The request body is larger than this endpoint's limit: 128 KiB by default, or 512 KiB for `POST /uploads` and `POST /assets/{assetId}/declaration`.","headers":{"Request-Id":{"description":"Identifies the request; quote it when contacting support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests the key may make in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,79}$","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.retryable","typeLabel":"boolean"},"param":{"type":"string","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message","retryable"],"additionalProperties":false,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","retryable":true,"param":"\u003cstring>","details":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"81ecd2f2-5443-40ca-9358-9d5c4108353e":{"description":"Send the body as application/json.","headers":{"Request-Id":{"description":"Identifies the request; quote it when contacting support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests the key may make in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,79}$","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.retryable","typeLabel":"boolean"},"param":{"type":"string","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message","retryable"],"additionalProperties":false,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","retryable":true,"param":"\u003cstring>","details":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"50f0503b-a96f-44c2-86ca-a7a183c3f71f":{"description":"rate_limited: the key or its owner is over the rate limit, or the organization is at its running cap. Retry after Retry-After seconds.","headers":{"Request-Id":{"description":"Identifies the request; quote it when contacting support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests the key may make in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,79}$","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.retryable","typeLabel":"boolean"},"param":{"type":"string","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message","retryable"],"additionalProperties":false,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","retryable":true,"param":"\u003cstring>","details":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"658c7b4d-b1bd-4ea9-8cc8-a512ecd1ff73":{"description":"internal: something went wrong. Retry.","headers":{"Request-Id":{"description":"Identifies the request; quote it when contacting support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests the key may make in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,79}$","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.retryable","typeLabel":"boolean"},"param":{"type":"string","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message","retryable"],"additionalProperties":false,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","retryable":true,"param":"\u003cstring>","details":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"0b934929-d0ea-4e63-8f89-953af046cfe4":{"description":"unavailable or pricing_unavailable: API keys, billing or pricing can't be reached right now. Retry.","headers":{"Request-Id":{"description":"Identifies the request; quote it when contacting support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests the key may make in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,79}$","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.retryable","typeLabel":"boolean"},"param":{"type":"string","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message","retryable"],"additionalProperties":false,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","retryable":true,"param":"\u003cstring>","details":{}}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"d3bf9985-c20e-4e73-9d98-1d5df07ad407":{"bearerAuth":{"type":"http","scheme":"bearer","description":"A ZeroGen API key: zg_ for a live key, zg_test_ for a test key.","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"e4c5630c-9eaf-4cb3-9832-e9363495e9e8":{"url":"https://api.zerogen.com/v1"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"A ZeroGen API key: zg_ for a live key, zg_test_ for a test key.","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"A ZeroGen API key: zg_ for a live key, zg_test_ for a test key.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"openapi.json"},"subdomain":"zero-gen","siteName":"ZeroGen Docs","title":"Transform an asset - ZeroGen Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-07T03:36:09.395Z","originalFileLocation":"api-reference/assets/transform-an-asset.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Makes a free Derived copy of an asset from a recipe: a frame from a video, or a cropped, resized or converted image, or a trimmed, cropped, despilled, LUT-graded, resized or converted video. The work runs in the background, so this returns a run; its output\u0026#x27;s asset is the copy. It needs runs:read as well as runs:create, because it returns the run. Send Prefer: wait=N to hold the response until it ends. Your earlier run of the same recipe on this asset for the same destination returns with reused true instead of running again, unless it failed. New runs count toward the running caps. A test key can\u0026#x27;t transform assets. Needs the runs:create and runs:read scopes.\">\u003cmeta data-mint-head name=\"application-name\" content=\"ZeroGen Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/zero-gen/ben01azdM0Av99iT/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/zero-gen/ben01azdM0Av99iT/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/zero-gen/ben01azdM0Av99iT/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/zero-gen/ben01azdM0Av99iT/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/zero-gen/ben01azdM0Av99iT/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/zero-gen/ben01azdM0Av99iT/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/zero-gen/ben01azdM0Av99iT/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/zero-gen/ben01azdM0Av99iT/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/zero-gen/ben01azdM0Av99iT/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Transform an asset - ZeroGen Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Makes a free Derived copy of an asset from a recipe: a frame from a video, or a cropped, resized or converted image, or a trimmed, cropped, despilled, LUT-graded, resized or converted video. The work runs in the background, so this returns a run; its output\u0026#x27;s asset is the copy. It needs runs:read as well as runs:create, because it returns the run. Send Prefer: wait=N to hold the response until it ends. Your earlier run of the same recipe on this asset for the same destination returns with reused true instead of running again, unless it failed. New runs count toward the running caps. A test key can\u0026#x27;t transform assets. Needs the runs:create and runs:read scopes.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"ZeroGen Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.zerogen.com/api-reference/assets/transform-an-asset\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://zero-gen.mintlify.site/_mintlify/api/og/v2?division=Assets\u0026amp;title=Transform+an+asset\u0026amp;description=Makes+a+free+Derived+copy+of+an+asset+from+a+recipe%3A+a+frame+from+a+video%2C+or+a+cropped%2C+resized+or+converted+image%2C+or+a+trimmed%2C+cropped%2C+despilled%2C+LUT-grade\u0026amp;theme=faa3a38b66501c3fd9e9fb87\u0026amp;signature=c1a96cd3a460f6bef82c9cbcddaa577c6fe7d86f992c1af81957977da055ec09\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Transform an asset - ZeroGen Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Makes a free Derived copy of an asset from a recipe: a frame from a video, or a cropped, resized or converted image, or a trimmed, cropped, despilled, LUT-graded, resized or converted video. The work runs in the background, so this returns a run; its output\u0026#x27;s asset is the copy. It needs runs:read as well as runs:create, because it returns the run. Send Prefer: wait=N to hold the response until it ends. Your earlier run of the same recipe on this asset for the same destination returns with reused true instead of running again, unless it failed. New runs count toward the running caps. A test key can\u0026#x27;t transform assets. Needs the runs:create and runs:read scopes.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://zero-gen.mintlify.site/_mintlify/api/og/v2?division=Assets\u0026amp;title=Transform+an+asset\u0026amp;description=Makes+a+free+Derived+copy+of+an+asset+from+a+recipe%3A+a+frame+from+a+video%2C+or+a+cropped%2C+resized+or+converted+image%2C+or+a+trimmed%2C+cropped%2C+despilled%2C+LUT-grade\u0026amp;theme=faa3a38b66501c3fd9e9fb87\u0026amp;signature=c1a96cd3a460f6bef82c9cbcddaa577c6fe7d86f992c1af81957977da055ec09\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/zero-gen/ben01azdM0Av99iT/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"ZeroGen Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#18181B\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.zerogen.com/api-reference/assets/transform-an-asset\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/assets/transform-an-asset.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.zerogen.com/#organization\",\"name\":\"ZeroGen Docs\",\"url\":\"https://docs.zerogen.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/zero-gen/W2GmhRNTfZqjZw9S/logo/light.svg?fit=max\u0026auto=format\u0026n=W2GmhRNTfZqjZw9S\u0026q=85\u0026s=35d09db4e90566e79f5af1c3d8ffb4be\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.zerogen.com#website\",\"name\":\"ZeroGen Docs\",\"url\":\"https://docs.zerogen.com\",\"publisher\":{\"@id\":\"https://docs.zerogen.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.zerogen.com/api-reference/assets/transform-an-asset#webpage\",\"url\":\"https://docs.zerogen.com/api-reference/assets/transform-an-asset\",\"name\":\"Transform an asset\",\"description\":\"Makes a free Derived copy of an asset from a recipe: a frame from a video, or a cropped, resized or converted image, or a trimmed, cropped, despilled, LUT-graded, resized or converted video. The work runs in the background, so this returns a run; its output's asset is the copy. It needs runs:read as well as runs:create, because it returns the run. Send Prefer: wait=N to hold the response until it ends. Your earlier run of the same recipe on this asset for the same destination returns with reused true instead of running again, unless it failed. New runs count toward the running caps. A test key can't transform assets. Needs the runs:create and runs:read scopes.\",\"dateModified\":\"2026-11-07T03:36:09.395Z\",\"isPartOf\":{\"@id\":\"https://docs.zerogen.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.zerogen.com/api-reference/assets/transform-an-asset#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.zerogen.com/api-reference/assets/transform-an-asset#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Developers\",\"item\":\"https://docs.zerogen.com/developers/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Endpoints\",\"item\":\"https://docs.zerogen.com/api-reference/account/read-the-calling-key\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Assets\",\"item\":\"https://docs.zerogen.com/api-reference/assets/search-assets\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Transform an asset\",\"item\":\"https://docs.zerogen.com/api-reference/assets/transform-an-asset\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.zerogen.com/api-reference/assets/transform-an-asset#apireference\",\"headline\":\"Transform an asset\",\"name\":\"Transform an asset\",\"description\":\"Makes a free Derived copy of an asset from a recipe: a frame from a video, or a cropped, resized or converted image, or a trimmed, cropped, despilled, LUT-graded, resized or converted video. The work runs in the background, so this returns a run; its output's asset is the copy. It needs runs:read as well as runs:create, because it returns the run. Send Prefer: wait=N to hold the response until it ends. Your earlier run of the same recipe on this asset for the same destination returns with reused true instead of running again, unless it failed. New runs count toward the running caps. A test key can't transform assets. Needs the runs:create and runs:read scopes.\",\"url\":\"https://docs.zerogen.com/api-reference/assets/transform-an-asset\",\"mainEntityOfPage\":{\"@id\":\"https://docs.zerogen.com/api-reference/assets/transform-an-asset#webpage\"},\"dateModified\":\"2026-11-07T03:36:09.395Z\",\"publisher\":{\"@id\":\"https://docs.zerogen.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.zerogen.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"ZeroGen Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"ZeroGen Docs","nav":{"global":null,"tabs":[{"tab":"Docs","pages":[{"title":"Docs","href":""}]},{"tab":"Models","pages":[{"title":"Models","href":"/models/overview"}]},{"tab":"Developers","groups":[{"group":"Developers","pages":[{"group":"Get started","expanded":false,"pages":[{"title":"Introduction","href":"/developers/introduction"},{"title":"API quickstart","href":"/developers/quickstart"},{"title":"SDKs","href":"/developers/sdks"},{"title":"Authentication","href":"/developers/authentication"},{"title":"Test keys","href":"/developers/test-keys"},{"title":"Build with AI agents","href":"/developers/build-with-ai"}]},{"group":"Runs and inputs","expanded":false,"pages":[{"title":"Models in the API","href":"/developers/models"},{"title":"Uploads and URL inputs","href":"/developers/uploads"},{"title":"Transforms","href":"/developers/transforms"},{"title":"Billing","href":"/developers/billing"}]},{"group":"Conventions","expanded":false,"pages":[{"title":"Errors","href":"/developers/errors"},{"title":"Rate limits","href":"/developers/rate-limits"},{"title":"Idempotency","href":"/developers/idempotency"},{"title":"Pagination","href":"/developers/pagination"}]},{"group":"API reference","expanded":false,"pages":[{"title":"Overview","href":"/api-reference/overview"}]},{"group":"Endpoints","expanded":false,"pages":[{"group":"Account","pages":[{"title":"Read the calling key","deprecated":null,"version":null,"openapi":"/openapi.json get /me","href":"/api-reference/account/read-the-calling-key"},{"title":"Read the organization's balance","deprecated":null,"version":null,"openapi":"/openapi.json get /balance","href":"/api-reference/account/read-the-organizations-balance"}]},{"group":"Models","pages":[{"title":"List models","deprecated":null,"version":null,"openapi":"/openapi.json get /models","href":"/api-reference/models/list-models"},{"title":"Read a model","deprecated":null,"version":null,"openapi":"/openapi.json get /models/{vendor}/{model}/{operation}","href":"/api-reference/models/read-a-model"}]},{"group":"Runs","pages":[{"title":"Quote a run","deprecated":null,"version":null,"openapi":"/openapi.json post /runs/quote","href":"/api-reference/runs/quote-a-run"},{"title":"List runs","deprecated":null,"version":null,"openapi":"/openapi.json get /runs","href":"/api-reference/runs/list-runs"},{"title":"Create a run","deprecated":null,"version":null,"openapi":"/openapi.json post /runs","href":"/api-reference/runs/create-a-run"},{"title":"Read a run","deprecated":null,"version":null,"openapi":"/openapi.json get /runs/{id}","href":"/api-reference/runs/read-a-run"},{"title":"Cancel a run","deprecated":null,"version":null,"openapi":"/openapi.json post /runs/{id}/cancel","href":"/api-reference/runs/cancel-a-run"}]},{"group":"Uploads","pages":[{"title":"Create an upload","deprecated":null,"version":null,"openapi":"/openapi.json post /uploads","href":"/api-reference/uploads/create-an-upload"},{"title":"Read an upload","deprecated":null,"version":null,"openapi":"/openapi.json get /uploads/{id}","href":"/api-reference/uploads/read-an-upload"},{"title":"Complete an upload","deprecated":null,"version":null,"openapi":"/openapi.json post /uploads/{id}/complete","href":"/api-reference/uploads/complete-an-upload"}]},{"group":"Projects","pages":[{"title":"List projects","deprecated":null,"version":null,"openapi":"/openapi.json get /projects","href":"/api-reference/projects/list-projects"}]},{"group":"Assets","pages":[{"title":"Search assets","deprecated":null,"version":null,"openapi":"/openapi.json get /assets","href":"/api-reference/assets/search-assets"},{"title":"Read an asset","deprecated":null,"version":null,"openapi":"/openapi.json get /assets/{assetId}","href":"/api-reference/assets/read-an-asset"},{"title":"Declare an upload's external provenance","description":"Record untrusted external provenance on an eligible upload. This is not verified and starts no generation. Requires uploads:create and library:read when sources are declared. The JSON request body is limited to 512 KiB; a workflow is limited to 256 KiB serialized UTF-8.\n\nNeeds the `uploads:create` scope.","deprecated":null,"version":null,"openapi":"/openapi.json post /assets/{assetId}/declaration","href":"/api-reference/assets/declare-an-uploads-external-provenance"},{"title":"Transform an asset","deprecated":null,"version":null,"openapi":"/openapi.json post /assets/{assetId}/transform","href":"/api-reference/assets/transform-an-asset"},{"title":"Read an asset's lineage","description":"What the asset was made from, in any project, and what was made from it, in its project: up to 30 assets on each side, nearest first. An edge reads `assetId` was made from `sourceAssetId`.\n\nNeeds the `library:read` scope.","deprecated":null,"version":null,"openapi":"/openapi.json get /assets/{assetId}/lineage","href":"/api-reference/assets/read-an-assets-lineage"},{"title":"Download an asset","deprecated":null,"version":null,"openapi":"/openapi.json get /assets/{assetId}/download","href":"/api-reference/assets/download-an-asset"},{"title":"List an asset's folders","deprecated":null,"version":null,"openapi":"/openapi.json get /assets/{assetId}/folders","href":"/api-reference/assets/list-an-assets-folders"},{"title":"Update an asset","deprecated":null,"version":null,"openapi":"/openapi.json patch /projects/{projectId}/assets/{assetId}","href":"/api-reference/assets/update-an-asset"}]},{"group":"Labels","pages":[{"title":"Add a label to assets","deprecated":null,"version":null,"openapi":"/openapi.json post /projects/{projectId}/labels/{labelId}/assets","href":"/api-reference/labels/add-a-label-to-assets"},{"title":"Remove a label from assets","deprecated":null,"version":null,"openapi":"/openapi.json post /projects/{projectId}/labels/{labelId}/assets/remove","href":"/api-reference/labels/remove-a-label-from-assets"},{"title":"List labels","deprecated":null,"version":null,"openapi":"/openapi.json get /labels","href":"/api-reference/labels/list-labels"},{"title":"Create a label","deprecated":null,"version":null,"openapi":"/openapi.json post /labels","href":"/api-reference/labels/create-a-label"},{"title":"Update a label","deprecated":null,"version":null,"openapi":"/openapi.json put /labels/{labelId}","href":"/api-reference/labels/update-a-label"},{"title":"Archive a label","deprecated":null,"version":null,"openapi":"/openapi.json post /labels/{labelId}/archive","href":"/api-reference/labels/archive-a-label"},{"title":"Restore a label","deprecated":null,"version":null,"openapi":"/openapi.json post /labels/{labelId}/restore","href":"/api-reference/labels/restore-a-label"}]},{"group":"Folders","pages":[{"title":"List folders","deprecated":null,"version":null,"openapi":"/openapi.json get /projects/{projectId}/folders","href":"/api-reference/folders/list-folders"},{"title":"Create a folder","deprecated":null,"version":null,"openapi":"/openapi.json post /projects/{projectId}/folders","href":"/api-reference/folders/create-a-folder"},{"title":"Delete a folder","deprecated":null,"version":null,"openapi":"/openapi.json delete /projects/{projectId}/folders/{folderId}","href":"/api-reference/folders/delete-a-folder"},{"title":"Update a folder","deprecated":null,"version":null,"openapi":"/openapi.json patch /projects/{projectId}/folders/{folderId}","href":"/api-reference/folders/update-a-folder"},{"title":"Undo a folder deletion","deprecated":null,"version":null,"openapi":"/openapi.json post /projects/{projectId}/folders/restore","href":"/api-reference/folders/undo-a-folder-deletion"},{"title":"Add assets to a folder","deprecated":null,"version":null,"openapi":"/openapi.json post /projects/{projectId}/folders/{folderId}/assets","href":"/api-reference/folders/add-assets-to-a-folder"},{"title":"Move assets to a folder","deprecated":null,"version":null,"openapi":"/openapi.json post /projects/{projectId}/folders/{folderId}/assets/move","href":"/api-reference/folders/move-assets-to-a-folder"},{"title":"Remove assets from a folder","deprecated":null,"version":null,"openapi":"/openapi.json post /projects/{projectId}/folders/{folderId}/assets/remove","href":"/api-reference/folders/remove-assets-from-a-folder"}]},{"group":"Naming presets","pages":[{"title":"List naming presets","deprecated":null,"version":null,"openapi":"/openapi.json get /projects/{projectId}/naming-presets","href":"/api-reference/naming-presets/list-naming-presets"}]},{"group":"LUTs","pages":[{"title":"List LUTs","deprecated":null,"version":null,"openapi":"/openapi.json get /luts","href":"/api-reference/luts/list-luts"}]},{"group":"Skills","pages":[{"title":"List skills","deprecated":null,"version":null,"openapi":"/openapi.json get /skills","href":"/api-reference/skills/list-skills"},{"title":"Read a skill","deprecated":null,"version":null,"openapi":"/openapi.json get /skills/{skillId}","href":"/api-reference/skills/read-a-skill"}]}]}]}]},{"tab":"Changelog","href":"https://zerogen.com/changelog"}]},"basePath":"","title":"Transform an asset - ZeroGen Docs","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-i2a3QZ8E.js","utils-ChLwp8m0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DRktVTDc.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CA2pEs4T.js","snippetPresets-ClQ6XrKD.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Ct_Lv36y.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Cn2PYw9e.js","shallow-rkyymjXQ.js","getApiPlaygroundDisplay-BB9vkXtE.js","CodeSnippet-Bm5RU7m1.js","CodeSnippets-BgU9Deuz.js","Page-BUDYNlhG.js","getPastedJson-BD-6NNum.js","icon-8Z6tud2e.js","MethodPill-Tuzr4g3V.js","DuplicateIcon-0ceWFYhN.js","createIcon-FBXow_ST.js","DynamicMarkdown-CD8713Yy.js","SectionHeading-7zgzQbH-.js","axios-vUo_bRtp.js","Markdown-D7Ofw1oz.js","clsx-eKJ4rcii.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CwjSCXIK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-9EK5IAXV.js"]}