Inviare un'attività di generazione video
Crea un'attività asincrona di generazione video e restituisce subito un task_id (HTTP 202). Eseguire il polling di GET /api/v1/videos/generations/{task_id} finché l'attività non viene completata con successo. Il corpo della richiesta può essere fornito in forma piatta ({model, prompt, ...}) oppure annidata ({model, input: {prompt, ...}}); se presente, l'oggetto input ha la precedenza. I campi callback (callBackUrl / callback_url / callbackUrl) vengono ignorati.
Tre modalità di input mutuamente esclusive:
- text-to-video: solo prompt;
- image-to-video (primo/ultimo fotogramma): first_frame_url (+ last_frame_url facoltativo);
- omni-reference: reference_image_urls / reference_video_urls / reference_audio_urls. La combinazione di primo/ultimo fotogramma con qualsiasi input di riferimento multimodale restituisce 400 invalid_request_error.
- Tipo: stringX
- Request - Id ID richiesta del chiamante facoltativo, restituito per diagnostica.
- Tipo: stringX
- Felo - Channel Codici canale pubblici separati da virgola e in ordine. Omettere questa intestazione per usare default; default deve essere usato da solo. In modalità wallet, default analizza in ordine inverso l'ordine effettivo dei canali pubblici del modello, ignora i canali non pubblicati o non disponibili e seleziona il provider del primo canale disponibile. Include gli endpoint disponibili di quel provider con lo stesso ID modello upstream e lo stesso livello di servizio. I canali espliciti vengono convalidati nell'ordine indicato dal client; viene inviato solo il gruppo di provider del primo canale. Nessun fallback automatico ad altri provider. Le intestazioni dei provider legacy non possono ignorare l'instradamento dei canali.
Input di generazione video. In forma piatta ({model, prompt, ...}) oppure annidata ({model, input: {...}}). input ha la precedenza. Deve essere usata esattamente una modalità di input; la combinazione di primo/ultimo fotogramma con input di riferimento multimodali viene rifiutata.
- Tipo: stringmodelobbligatorio
Nome del modello esposto da Felo, ad es. seedance-2.0-mini.
- Tipo: string enumaspect
_ratio valori- 16:9
- 9:16
- 1:1
- 4:3
- 3:4
- 21:9
- adaptive
- Tipo: integerdurationmin:4max:15
Integer numbers.
- Tipo: string Formato: urifirst
_frame _url - Tipo: booleangenerate
_audio - Tipo: objectinput
Oggetto input annidato facoltativo; se presente, i suoi campi hanno la precedenza sui campi allo stesso livello.
- aspectTipo: string enum
_ratio Proporzioni di output; adaptive segue le proporzioni dell'immagine di input.
valori- 16:9
- 9:16
- 1:1
- 4:3
- 3:4
- 21:9
- adaptive
- durationTipo: integermin:4max:15
Durata di output in secondi.
- firstTipo: string Formato: uri
_frame _url URL dell'immagine del primo fotogramma (modalità image-to-video).
- generateTipo: boolean
_audio Indica se generare una traccia audio sincronizzata.
- lastTipo: string Formato: uri
_frame _url URL dell'immagine dell'ultimo fotogramma; deve essere usato insieme a first_frame_url.
- promptTipo: stringlunghezza massima:2000
Prompt. Obbligatorio per le modalità text-to-video e omni-reference.
- referenceTipo: array string[] …3Formato: uri
_audio _urls Clip audio omni-reference.
- referenceTipo: array string[] …9Formato: uri
_image _urls Immagini omni-reference. Mutuamente esclusive con primo/ultimo fotogramma.
- referenceTipo: array string[] …3Formato: uri
_video _urls Video omni-reference. Mutuamente esclusivi con primo/ultimo fotogramma. Fornire un video modifica il prezzo unitario di fatturazione e aggiunge la durata dell'input al conteggio dei token.
- resolutionTipo: string enum
Risoluzione di output. Una risoluzione più alta consuma più token e costa di più.
valori- 480p
- 720p
- 1080p
- 4k
- serviceTipo: string | null
_tier Attualmente è supportato solo default (standard). Se omesso, null, alias e stringhe non supportate ricadono su default; altri tipi restituiscono HTTP 400. I canali e i prezzi configurati restano invariati. Le API di testo inviano il valore standard del provider; le API Decisions e di generazione omettono il campo upstream.
- Tipo: string Formato: urilast
_frame _url - Tipo: stringpromptlunghezza massima:2000
- Tipo: array string[] …3Formato: urireference
_audio _urls - Tipo: array string[] …9Formato: urireference
_image _urls - Tipo: array string[] …3Formato: urireference
_video _urls - Tipo: string enumresolutionvalori
- 480p
- 720p
- 1080p
- 4k
- Tipo: string | nullservice
_tier Attualmente è supportato solo default (standard). Se omesso, null, alias e stringhe non supportate ricadono su default; altri tipi restituiscono HTTP 400. I canali e i prezzi configurati restano invariati. Le API di testo inviano il valore standard del provider; le API Decisions e di generazione omettono il campo upstream.
- Tipo: object · VideoGenerationAccepted202
Attività accettata
- enumkindconst:videoobbligatoriovalori
- video
- Tipo: array string[]outputsobbligatorio
Vuoto finché l'attività non viene completata con successo.
- enumstatusconst:queuedobbligatoriovalori
- queued
- Tipo: stringtask
_id obbligatorioID attività da usare per il polling.
application/json - Tipo: object · GenerationError400
Richiesta non valida (modello sconosciuto, modalità di input miste, campi non validi)
Struttura di errore compatibile con OpenAI.
- Tipo: objecterror
- messageTipo: stringobbligatorio
- typeTipo: string enumobbligatoriovalori
- invalid
_request _error - server
_error
- codeTipo: string
- paramTipo: string ammette null
application/json - Tipo: object · GenerationError401
Chiave API Felo non valida o mancante
Struttura di errore compatibile con OpenAI.
- Tipo: objecterror
- messageTipo: stringobbligatorio
- typeTipo: string enumobbligatoriovalori
- invalid
_request _error - server
_error
- codeTipo: string
- paramTipo: string ammette null
application/json - Tipo: object · GenerationError402
Saldo insufficiente / requisito di fatturazione non soddisfatto
Struttura di errore compatibile con OpenAI.
- Tipo: objecterror
- messageTipo: stringobbligatorio
- typeTipo: string enumobbligatoriovalori
- invalid
_request _error - server
_error
- codeTipo: string
- paramTipo: string ammette null
application/json - Tipo: object · GenerationError403
Account non autorizzato (abbonamento richiesto o utente bloccato). Anche i modelli disattivati vengono rifiutati prima delle chiamate upstream. Le richieste e le attività già accettate proseguono.
Struttura di errore compatibile con OpenAI.
- Tipo: objecterror
- messageTipo: stringobbligatorio
- typeTipo: string enumobbligatoriovalori
- invalid
_request _error - server
_error
- codeTipo: string
- paramTipo: string ammette null
application/json - Tipo: object · GenerationError429
Limite di richieste o di spesa raggiunto
Struttura di errore compatibile con OpenAI.
- Tipo: objecterror
- messageTipo: stringobbligatorio
- typeTipo: string enumobbligatoriovalori
- invalid
_request _error - server
_error
- codeTipo: string
- paramTipo: string ammette null
application/json - Tipo: object · GenerationError502
Errore del provider upstream
Struttura di errore compatibile con OpenAI.
- Tipo: objecterror
- messageTipo: stringobbligatorio
- typeTipo: string enumobbligatoriovalori
- invalid
_request _error - server
_error
- codeTipo: string
- paramTipo: string ammette null
application/json - Tipo: object · GenerationError503
Servizio di generazione o servizio di fatturazione temporaneamente non disponibile
Struttura di errore compatibile con OpenAI.
- Tipo: objecterror
- messageTipo: stringobbligatorio
- typeTipo: string enumobbligatoriovalori
- invalid
_request _error - server
_error
- codeTipo: string
- paramTipo: string ammette null
application/json
curl https://openapi.felo.ai/api/v1/videos/generations \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"model": "seedance-2.0-mini",
"prompt": "a cinematic trailer shot, 720p",
"resolution": "720p",
"duration": 5,
"generate_audio": true
}'
{
"task_id": "string",
"status": "queued",
"kind": "video",
"outputs": [
"string"
]
}