outputs[] array. Each item carries an asset_id you can pass straight into a later submit’s media inputs, so you can chain generations — for example, generate an image, then animate it into a video — without downloading and re-uploading the file in between.
Reference an output in the next submit
- Submit the first job and poll
GET /v3/jobs/{job_id}until itsstatusisCOMPLETED.outputs[]is empty until then. - Read
outputs[0].asset_id(or whichever output you want to chain from) — it looks likeasset_<uuid>. - Pass it in the next submit as an asset reference. This excerpt shows the media field; the full Veo 3 request below includes its other required inputs:
asset_id is the only supported way to name a previous job’s output. If you pass a job_<uuid> in an asset field the API returns a 400 pointing you back at outputs[].asset_id.
Earlier drafts of the API described a workaround where you replaced the
job_ prefix of a job id with asset_ to obtain the asset id. That derivation is no longer supported — read outputs[].asset_id instead.Example: image, then video
Use the quickstart to submit an image job and wait forCOMPLETED. Then set JOB_ID to the printed job ID before running the block below. This block does not submit
another image job.
start_image is the field in Veo 3’s schema.
Output status
Each item inoutputs[] carries a status:
Per-output errors
error is now published on every kind of output — image, video, and audio — as an error envelope. It is null on a COMPLETED output and populated on a FAILED output, so you can inspect the failure per-item when a job produces multiple outputs.
Measured frame rate on video outputs
Video outputs now report the real measured frame rate infps. Older jobs whose output was probed before this change may still return fps: null — treat null as “unmeasured” rather than “no frame rate”.