Ir para a navegação

Create Generation with Files

The multipart/form-data form of POST /v2/generate — the same endpoint as “Create Generation”, for uploading local files directly instead of passing URLs. Send each file under a field named for its type (video, image, audio), at most one of each. The application parser allows up to 5 GiB (5 × 1024³ bytes) per file, 3 files, 32 fields, 35 total parts, and 1 MiB per field. A file over the parser limit returns 413 generation_input_validation_failed, and a file over your plan limit returns 422 file_size_exceeds_plan_limit. Proxy limits may be lower; this ceiling does not guarantee a 5 GiB direct transfer. Each file is saved as an asset in your organization and passed to the generation by assetId. For large files, upload via POST /v2/assets/upload first and pass the assetId, so retries don’t resend the file. Nested fields such as input, options, segments, dubParams, and dialogueEdit must be sent as JSON strings in multipart requests. Image inputs are sync-3 only. If a text input requires speech synthesis and the ElevenLabs provider is temporarily unavailable, the request returns errorCode elevenlabs_service_unavailable: 504 for provider timeouts and 503 for other provider outages for unkeyed requests. Keyed uncertain outcomes return 503 IDEMPOTENCY_OUTCOME_UNKNOWN instead. An API-key request that passes dialogueEdit is refused with errorCode dialogue_edit_retime_required (422) when the organization’s rollout lacks segment lipsync and section expansion. A dialogueEdit that removes more speech than the surrounding footage can absorb returns errorCode dialogue_edit_removal_too_large (422). When the failing section can be identified, dialogueEditSection on the error names it; change it and create a new preview before submitting again. Retrying the same preview fails again. Send the optional Idempotency-Key header on the first request and reuse it with the same payload on retries. An accepted replay returns 200 with the original generation’s current state and Idempotency-Replayed: true. See Idempotent Requests for key validation, conflicts, retention, and uncertain-outcome recovery.

Autenticação

x-api-keystring
Autenticação de chave de API via cabeçalho

Cabeçalhos

Idempotency-KeystringOpcional

Case-sensitive organization-scoped key, 1–128 characters matching [A-Za-z0-9._~-]+. Send exactly one header. Reuse the same key and payload for retries of one action. Retained seven days from acceptance, longer while active or unresolved. Not a JSON field.

Solicitação

Use content type multipart/form-data to upload local files directly. The application parser caps each file at 5 GiB; plan and proxy limits also apply. Combining file and URL inputs is supported; a file replaces any input items of the same type. Nested fields such as input, options, segments, dubParams, and dialogueEdit must be sent as JSON strings. With dialogueEdit, supply the original video by URL or assetId; uploaded video, audio and image files are rejected.

videofileOpcional
Input video file.
imagefileOpcional

Input image file. Only supported with sync-3 model.

audiofileOpcional
Input audio file.
modelenumObrigatório
name of the model to use for generation.
Valores permitidos:
inputlist of objectsOpcional

Array of input objects, encoded as a JSON string in multipart requests. Can be used to provide URLs or assetIds for larger files. Each input should either have a file, a url, or an assetId. Audio input items can be provided as either recorded/captured audio URL or a text-to-speech input with TTS provider configuration.

optionsobjectOpcional
Optional generation options, encoded as a JSON string in multipart requests.
segmentslist of objectsOpcional
Optional segment definitions, encoded as a JSON string in multipart requests.
dubParamsobjectOpcional
Optional dubbing parameters, encoded as a JSON string in multipart requests.
webhookUrlstringOpcional
outputFileNamestringOpcional
projectIdstringOpcional
Optional project id to attach the generation to.
dialogueEditobjectOpcional

Optional reference to a completed dialogue edit (its id from POST /v2/dialogue-edits) to render its preview into a video, encoded as a JSON string in multipart requests. Send one video input from the same source and no audio, segments or dubParams.

Resposta

First acceptance returns 201. An equivalent keyed replay returns 200 with this same response shape and Idempotency-Replayed: true. The original generation may still be processing or may have failed.

createdAtdatetime
The date and time the generation was created.
idstring
A unique identifier for the generation.
inputlist of objects
An array of input objects used for generation.
modelenum
The name of the model used for generation.
Valores permitidos:
statusenum
The status of the generation.
Valores permitidos:
errorstringOpcional
The error message if the generation failed.
errorCodestringOpcional

Stable, machine-readable error code if the generation failed (e.g. generation_input_video_inaccessible). The full catalog of codes, messages and suggested fixes is served unauthenticated at GET /v2/errors.

optionsobjectOpcional
Options for the generation.
outputDurationdoubleOpcional
The duration of the output media.
outputUrlstringOpcional
The URL of the output media.
outputFileNamestringOpcional
The sanitized filename applied to the output media. Characters outside letters, numbers, dashes and underscores are stripped and spaces become underscores, so this can differ from the value submitted. Null when no name was provided.
segmentslist of objectsOpcional
The segments of the generation.
segmentOutputUrlstringOpcional
The URL of the segment output media.
synthesizedAudioUrlstringOpcional

The URL of the audio synthesized from a text (TTS) input. Only present for generations created with a TTS text input; reuse it as an audio input to keep the same take across generations.

webhookUrlstringOpcional
The URL to the webhook endpoint.
projectIdstringOpcional
The id of the project this generation is attached to, or null when it belongs to no project. Set via the projectId field on the create request.
generationEstimateobjectOpcional

A completion-time estimate captured once when the generation is accepted. Populated only for generations created in sync's own apps, such as Sync Studio; the field is absent for generations created through the API today.

Erros

400
Bad Request Error
401
Unauthorized Error
409
Conflict Error
410
Generation Deleted Error
413
Payload Too Large Error
422
Unprocessable Entity Error
429
Generation Too Many Requests Error
500
Internal Server Error
503
Service Unavailable Error
504
Gateway Timeout Error