POST /v3/files. The API returns a url, detected
content_type, and expires_at. Keep the URL unchanged, including its query
string; it is the upload handle.
input.start_image. For GPT Image 2, image-editing references belong in
input.images, an array. Arbitrary external URLs are not equivalent to a
Hedra upload handle. See video inference
for a full input object.
Expiry and limits
Use the returnedexpires_at to determine whether a handle can still be
submitted. The current contract describes a one-hour upload-handle lifetime.
Re-upload expired inputs. File type, byte size, and media duration limits differ
by model and input slot; inspect GET /v3/models/{model}/openapi.json.
Output URLs are signed download URLs. An output marked EXPIRED has no
retrievable URL or asset ID. Download outputs you need to retain; do not use a
signed URL as permanent storage. The public contract does not establish a single
retention guarantee for every model or account.
Reuse a generated output
Read the completed output’s server-issuedasset_id and use
{"source":"asset","asset_id":"asset_..."} in the next model’s media input.
Do not derive it from job_id. See Chain inference jobs.