Vai alla documentazione
In questa pagina

Seedance 2.5

Genera video con Seedance 2.5 partendo da testo, dal primo e dall'ultimo fotogramma o usando riferimenti multimodali. Questa pagina descrive l'intero flusso di lavoro, dalla richiesta al risultato finale.

ID del modello API: seedance-2-5

La generazione è asincrona. Salva il taskId restituito alla creazione del task, quindi interroga lo stato o ricevi un webhook.

Funzionalità

FunzionalitàValori supportati
Risoluzione video480p · 720p · 1080p
Durata video4–30 secondi
Proporzioni16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive
Immagini di riferimentoFino a 30 immagini
Video di riferimentoFino a 10 video
File audio di riferimentoFino a 10 file audio
Tutti i riferimenti combinatiFino a 50 file di riferimento in totale
Durata totale per gruppo video/audio30 secondi
seedNon supportato
Accetta anche duration=-1 nella modalità da riferimento a video; vedi la sezione dedicata alla modifica video e ai prezzi qui sotto. image-to-video supporta solo adaptive; ometti questo campo o impostalo su adaptive.

Prezzi e crediti

La generazione di video viene tariffata in crediti in base alla durata fatturabile in secondi. Senza un video di input, la durata fatturabile corrisponde alla durata del video generato; in presenza di un video di input, include anche la durata del video di riferimento.

La tabella seguente mostra i crediti addebitati al secondo e non il costo totale di un'operazione. La tariffa varia a seconda del modello, della risoluzione finale e dell'eventuale inserimento di video di riferimento nella modalità reference-to-video. Per il calcolo del costo totale, consulta le formule e gli esempi riportati sotto la tabella.

Risoluzione videoSenza video in inputCon video in input
480p10 crediti al secondo6 crediti al secondo
720p20 crediti al secondo12 crediti al secondo
1080p30 crediti al secondo20 crediti al secondo
  • Senza video in input: secondi generati × tariffa senza video.
  • Con video in input: (secondi generati + secondi effettivi del video di riferimento) × tariffa con video. Il server calcola la durata totale del video di riferimento arrotondandola al secondo superiore prima dell'addebito.
  • I soli riferimenti di immagini o audio utilizzano la tariffa senza video. La tariffa con video si applica esclusivamente nella modalità da riferimento a video quando vengono forniti video come input.

Esempi di calcolo dei costi

Video da testo a video da 5 secondi a 720p: 5 × 20 = 100 crediti.

Video generato da 5 secondi a 720p con video di riferimento da 5 secondi: (5 + 5) × 12 = 120 crediti.

Questi crediti vengono detratti in anticipo al momento della creazione del task. Se il task va a buon fine, questo importo costituisce l'addebito finale, che non subirà aumenti o rimborsi parziali in base alla durata effettiva dell'output. In caso di task falliti o scaduti, si avvierà la procedura di rimborso.

I crediti vengono prenotati all'invio e addebitati solo a completamento avvenuto. I task falliti o andati in timeout avviano la procedura di rimborso. Lo stato di fatturazione refund_failed indica che il rimborso non è andato a buon fine; verifica i log delle API o contatta l'assistenza.

Come vengono addebitati i crediti quando duration=-1

Quando la durata è impostata su -1, la durata finale dell'output non è fissa, ma viene stabilita dal modello.

Nella maggior parte dei casi, è consigliabile impostare la durata sull'effettiva lunghezza del video desiderata anziché su -1. Raccomandiamo di utilizzare il valore -1 solo per l'editing video e non per altri scenari di generazione video.

Input di riferimentoCome viene calcolato l'addebitoEsempio
Con video di riferimentoSomma la durata di tutti i video di riferimento e arrotonda il totale al secondo intero successivo, definendolo T. L'addebito è pari a (T + T) × la tariffa con video: un T rappresenta la durata stimata del file di output e l'altro rappresenta la durata del video di input.720p con un video di riferimento di 5 secondi: (5 + 5) × 12 = 120 crediti.
Senza video di riferimento (solo immagini o audio)Vengono utilizzati 30 secondi come durata stimata dell'output. L'addebito è pari a 30 × la tariffa senza video.720p senza video di riferimento: 30 × 20 = 600 crediti.

Autenticazione

Crea una chiave API nella dashboard. La chiave completa viene mostrata una sola volta. Conservala sul tuo server e inviala come token Bearer in ogni richiesta.

URL di base

https://api.seevio.ai
Authorization: Bearer sk_live_your_api_key
Content-Type: application/json

Imposta la variabile d'ambiente SEEVIO_API_KEY prima di eseguire questi esempi. Gli esempi in JavaScript vengono eseguiti sul server con Node.js; gli esempi in Python utilizzano la libreria requests.

Avvio rapido

Invia questa richiesta minima, salva il taskId restituito e usa l'esempio di query del task riportato di seguito. Il valore dei crediti nella risposta di creazione corrisponde all'importo prenotato.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  }
}'

Esempio di risposta alla creazione del task

Una volta accettata la richiesta precedente, l'API restituisce questa risposta JSON. taskId è l'identificativo del task da utilizzare per le successive verifiche sullo stato; credits indica il numero di crediti riservati a questo task. Questa risposta conferma la corretta creazione del task, non che il video sia pronto. Sarà necessario monitorare periodicamente lo stato del task o utilizzare un Webhook per ricevere il video finale.

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 100
}

Crea un task

POST https://api.seevio.ai/v1/videos/generations

Invia un oggetto JSON contenente model e input, insieme a un callback_url opzionale. Specifica sempre l'ID del modello indicato in questa pagina; se omesso, verrà selezionato seedance-2-0.

Corpo della richiesta

CampoTipoObbligatorioDescrizione e vincoli
model
string

ID modello. Per utilizzare Seedance 2.5, imposta questo campo su seedance-2-5.

callback_url
stringNo

Endpoint HTTPS pubblico per le chiamate POST di callback in caso di completamento o errore. Non sono consentiti host locali o reti private.

Esempio: https://example.com/webhooks/seevio
input
object

Impostazioni di generazione. Deve contenere un prompt non vuoto.

Parametri di input

image_urls è obbligatorio in image-to-video. reference-to-video richiede almeno un riferimento a scelta tra image_urls, video_urls e audio_urls.

Fornisci image_urls, video_urls e audio_urls sotto forma di array di stringhe URL (string[]). Ogni URL fornito deve essere accessibile pubblicamente tramite HTTPS, inclusi i contenuti multimediali ignorati dalla modalità selezionata.

CampoTipoObbligatorioPredefinitoDescrizione e vincoli
input.prompt
string

Richiesto in qualsiasi modalità, compresi i riferimenti solo media. Fino a 10.000 caratteri prima del troncamento; deve contenere testo visibile (non solo spazi vuoti).

Esempio: A cat surfing at sunset
input.generation_type
stringNotext-to-video

text-to-video utilizza solo il prompt; image-to-video utilizza 1–2 immagini; reference-to-video utilizza riferimenti di immagini, video e/o audio.

Valori supportati
text-to-video | image-to-video | reference-to-video
input.image_urls
string[]Condizionale[]

image-to-video: 1 immagine per il primo fotogramma, o 2 immagini ordinate per il primo e l'ultimo fotogramma. reference-to-video: fino a 30 immagini. Ignorato in text-to-video.

Esempio: ["https://example.com/first-frame.jpg"]
input.video_urls
string[]Condizionale[]

Inoltrato solo in reference-to-video; fino a 10 video e 30 secondi complessivi. Ignorato nelle altre modalità.

Esempio: ["https://example.com/source.mp4"]
input.audio_urls
string[]Condizionale[]

Inoltrato solo in reference-to-video; fino a 10 file audio e 30 secondi complessivi. Ignorato nelle altre modalità.

Esempio: ["https://example.com/music.mp3"]
input.duration
integerNo5

Durata intera del video generato da 4 a 30 secondi. Accetta anche -1 solo in reference-to-video. Utilizzalo con un video sorgente per la modifica; la fatturazione segue la regola speciale descritta sopra.

Valori supportati
-1 | 4–30
Esempio: 5
input.aspect_ratio
stringNoadaptive

Proporzioni del video generato. adaptive consente al modello di determinare le proporzioni ottimali. image-to-video supporta solo adaptive; ometti questo campo o impostalo su adaptive.

Valori supportati
16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive
Esempio: adaptive
input.resolution
stringNo720p

Usa una delle risoluzioni supportate elencate qui.

Valori supportati
480p | 720p | 1080p
Esempio: 720p
input.generate_audio
booleanNotrue

Richiede la generazione di audio sincronizzato.

Valori supportati
true | false
Esempio: true
input.watermark
booleanNofalse

Richiede l'applicazione di un watermark AI sul video generato.

Valori supportati
true | false
Esempio: false
input.web_search
booleanNofalse

Abilita la ricerca web, se supportata dal modello.

Valori supportati
true | false
Esempio: false
input.return_last_frame
booleanNofalse

Richiede il fotogramma finale. Il risultato della query conterrà data.last_frame_url quando disponibile, altrimenti sarà null.

Valori supportati
true | false
Esempio: true

I campi booleani devono essere impostati su true o false in formato JSON, non come stringhe o numeri.

Risposta di creazione

La risposta HTTP 200 restituisce taskId (stringa) e credits (numero). Questo conferma la creazione del task, non il suo completamento. L'importo indicato sotto corrisponde all'avvio rapido a 720p di 5 secondi.

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 100
}

Modalità di generazione ed esempi

Sostituisci gli URL di esempio con i tuoi file HTTPS accessibili pubblicamente. Gli URL di esempio servono solo a illustrare la struttura della richiesta e non sono risorse scaricabili.

Da testo a video

Genera a partire da un prompt testuale. Gli URL dei file multimediali non vengono considerati in questa modalità.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  }
}'

Primo fotogramma

Fornisci un'immagine come primo fotogramma e descrivi il movimento nel prompt.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/first-frame.jpg"
    ],
    "aspect_ratio": "adaptive"
  }
}'

Primo e ultimo fotogramma

Fornisci due URL di immagini in ordine: primo fotogramma, poi ultimo fotogramma. Questo esempio richiede anche il fotogramma finale del video generato.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/first-frame.jpg",
      "https://example.com/last-frame.jpg"
    ],
    "aspect_ratio": "adaptive",
    "return_last_frame": true
  }
}'

Riferimento multimodale

Combina riferimenti immagine, video e audio. Il prompt rimane obbligatorio. L'inserimento di un video di riferimento modifica la formula di fatturazione.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "Follow the reference camera movement and keep the character consistent. Use the audio for ambience.",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "image_urls": [
      "https://example.com/character.jpg"
    ],
    "video_urls": [
      "https://example.com/camera.mp4"
    ],
    "audio_urls": [
      "https://example.com/ambience.mp3"
    ],
    "aspect_ratio": "adaptive"
  }
}'

Riferimento audio

Usa un file audio come unico riferimento, accompagnato da un prompt testuale obbligatorio che descrive il video desiderato.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "Create a coastal sunrise scene matching the rhythm of this audio.",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "audio_urls": [
      "https://example.com/music.mp3"
    ]
  }
}'

Modifica video

Per il montaggio video con Seedance 2.5, è necessario impostare la durata su -1 e l'aspetto (aspect_ratio) su adaptive. Entrambe le impostazioni sono obbligatorie, altrimenti la generazione non andrà a buon fine.

Descrivi le modifiche e fornisci il video sorgente. Imposta duration=-1 e usa proporzioni adaptive. Per questo flusso di lavoro, usa una clip sorgente di almeno 4 secondi. La regola di fatturazione per duration=-1 è indicata sopra.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "Edit the source video: change the character’s coat to blue and preserve the camera movement.",
    "duration": -1,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "video_urls": [
      "https://example.com/source.mp4"
    ],
    "aspect_ratio": "adaptive"
  }
}'

Estensione video

Per l'estensione video Seedance 2.5, il parametro aspect_ratio deve essere impostato su adaptive; in caso contrario, la generazione potrebbe non riuscire. Imposta normalmente la durata sul valore desiderato per il video finale entro l'intervallo supportato; non è necessario utilizzare -1.

Descrivi come deve proseguire il video sorgente. Usa proporzioni adaptive e imposta una durata standard entro i limiti del modello.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "Continue the camera movement from the source video, revealing a forest clearing.",
    "duration": 8,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "video_urls": [
      "https://example.com/source.mp4"
    ],
    "aspect_ratio": "adaptive"
  }
}'

Interroga un task

GET https://api.seevio.ai/v1/tasks/{taskId}

Sostituisci l'ID di esempio con il taskId restituito alla creazione. Le query restituiscono solo i task associati all'utente della chiave API; ID non accessibili o inesistenti restituiscono HTTP 404.

Come punto di partenza, effettua un polling ogni 10–20 secondi, rallenta le richieste in caso di HTTP 429 e interrompi quando lo stato diventa completed o failed. Per gli ambienti di produzione, consigliamo l'uso dei webhook. Ogni esempio di codice seguente esegue una singola query.

curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer $SEEVIO_API_KEY"
StatoDescrizione e vincoli
queuedAccettato e in attesa di elaborazione.
generatingGenerazione in corso.
completedCompletato con successo. Scarica il file da data.results prima della scadenza.
failedErrore definitivo. Verifica failed_reason e billing_status.
CampoTipoDescrizione e vincoli
idstring
Identificatore del task. Corrisponde al taskId della risposta di creazione.
created_atnumber
Data e ora di creazione del task in formato Unix timestamp (secondi).
modelstring
L'ID pubblico del modello utilizzato per questo task.
billing_statusstring
Stato di fatturazione: reserved, charged, refunded o refund_failed.
creditsnumber
Crediti prenotati per questo task. Questo valore viene conservato anche dopo un rimborso; verifica billing_status per determinare l'esito finanziario.
failed_reasonstring | null
Causa del problema per i task falliti; null in caso contrario. Le query fallite omettono la sezione data.
dataobject
Presente nelle query dei task non falliti. Contiene i dettagli di output ed elaborazione.
data.resultsstring[]
Array di URL dei video. Vuoto fino al completamento o dopo la scadenza del video.
data.video_expires_atstring | null
Scadenza del video in formato ISO 8601, oppure null prima che sia disponibile. Salva il file prima di questa data.
data.last_frame_urlstring | null
URL dell'ultimo fotogramma quando richiesto e disponibile, altrimenti null.
data.processing_timenumber | null
Durata dell'elaborazione da parte del provider in secondi, se disponibile, altrimenti null.

Task completato: risposta alla query con i risultati video

Quando la query restituisce status=completed, la generazione del video è terminata. Puoi trovare gli URL del video in data.results; assicurati di scaricarli prima della data indicata in data.video_expires_at. Lo stato billing_status=charged indica che i crediti prenotati sono stati effettivamente addebitati.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "status": "completed",
  "billing_status": "charged",
  "credits": 100,
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

Task fallito: risposta alla query con dettagli sul fallimento e sulla fatturazione

Se la query restituisce status=failed, significa che la generazione non è andata a buon fine. Consulta failed_reason per conoscerne il motivo e billing_status per l'esito del rimborso. In questo esempio, lo stato refunded indica che i crediti sono stati riaccreditati. La voce credits mostra la quota inizialmente prenotata e la risposta non include la chiave data.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "status": "failed",
  "billing_status": "refunded",
  "credits": 100,
  "failed_reason": "provider_failed"
}

Webhook

Imposta callback_url nella richiesta di creazione per ricevere una richiesta POST JSON al completamento o al fallimento del task. Restituisci una risposta 2xx entro 15 secondi. Gli invii non riusciti verranno riprovati; gestisci le notifiche duplicate in modo idempotente tramite l'ID del task.

L'endpoint di callback deve accettare richieste POST con un corpo in formato JSON (Content-Type: application/json).

Crea un task con callback

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  },
  "callback_url": "https://example.com/webhooks/seevio"
}'

I payload dei webhook differiscono dalle risposte alle query sui task: omettono billing_status e credits; i dettagli sugli errori si trovano all'interno di data.failed_reason e data.credits_refunded. Il valore created_at del webhook indica il timestamp dell'evento in formato Unix (secondi).

Attività completata: payload di callback riuscito

In caso di generazione riuscita, la callback conterrà lo stato status=completed. Utilizza id per identificare l'attività e data.results per recuperare gli URL dei video. Assicurati di scaricare e salvare i risultati prima della scadenza indicata in data.video_expires_at.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "status": "completed",
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

Attività non riuscita: payload di callback fallito

In caso di errore durante la generazione, la callback conterrà lo stato status=failed. Utilizza id per identificare l'attività, data.failed_reason per conoscere il motivo del fallimento e data.credits_refunded per verificare il numero di crediti riaccreditati.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "status": "failed",
  "data": {
    "failed_reason": "provider_failed",
    "credits_refunded": 100
  }
}

Esempio di ricevitore

export async function POST(request: Request) {
  const callbackData = await request.json();

  if (callbackData.status === "completed") {
    const videoUrls = callbackData.data.results;
    // Save the video URLs and mark this task as completed in your application.
    console.log(callbackData.id, videoUrls);
  }

  if (callbackData.status === "failed") {
    const { failed_reason, credits_refunded } = callbackData.data;
    // Record the failure reason and refunded credits for this task.
    console.error(callbackData.id, failed_reason, credits_refunded);
  }

  return new Response(null, { status: 200 });
}

Questo esempio in Next.js legge il corpo JSON della callback e gestisce direttamente le attività completate e fallite. Ti consigliamo di aggiungere logiche di persistenza e deduplicazione dei task-ID per la tua applicazione, e di accodare i processi più lenti prima di confermare la callback.

Requisiti e limitazioni dei media

  • Tutti i media e gli URL di callback devono essere URL HTTPS pubblici. Evita l'uso di localhost, IP privati o file che richiedono cookie o autenticazione. Gli URL dei file video/audio di riferimento devono indirizzare a file multimediali leggibili direttamente.
  • In reference-to-video, fornisci almeno un riferimento, con un limite massimo di 30 immagini, 10 video, 10 file audio e 50 elementi multimediali complessivi. La durata totale dei video e quella degli audio non devono superare i 30 secondi ciascuna.
  • La modalità text-to-video ignora tutti i riferimenti multimediali. La modalità image-to-video considera solo le immagini del primo e dell'ultimo fotogramma, ignorando i riferimenti video e audio. Usa la modalità reference-to-video per combinare più formati.
  • Ogni file video o audio di riferimento deve avere una durata compresa tra 2 e 30 secondi. Per gli esempi di modifica video, usa clip sorgente di almeno 4 secondi.

Requisiti delle immagini

  • Ogni immagine deve avere una dimensione inferiore a 30 MB.
  • Formati supportati: jpeg, png, webp, bmp, tiff, gif.
  • Rapporto d'aspetto (larghezza ÷ altezza): compreso tra 0,4 e 2,5.
  • Larghezza e altezza devono essere comprese tra 300 e 6.000 pixel.

Requisiti dei video

  • Formati supportati: mp4, mov.
  • Ogni video non deve superare i 100 MB.
  • Frequenza fotogrammi: compresa tra 24 e 60 fps.
  • Rapporto d'aspetto (larghezza ÷ altezza): compreso tra 0,4 e 2,5.
  • Pixel totali (larghezza × altezza): compresi tra 407.696 e 8.295.044. Ad esempio, 614 × 664 = 407.696 e 3.326 × 2.494 = 8.295.044. Questi sono solo esempi di calcolo dei pixel, non requisiti fissi per larghezza e altezza.

Requisiti dei file audio

  • Formati supportati: wav, mp3.
  • Ogni file audio non deve superare i 15 MB.

Errori

Gli errori HTTP contengono un oggetto error con code e message. Un task accettato correttamente può comunque fallire in una fase successiva; interroga lo stato del task o gestisci la chiamata di callback per l'errore.

{
  "error": {
    "code": "invalid_request",
    "message": "input.prompt is required."
  }
}
HTTPCampoCosa fare
400invalid_request
Correggi il formato JSON, il prompt mancante, l'intervallo dei parametri o l'URL del file multimediale prima di riprovare.
401invalid_api_key
Controlla il token Bearer e verifica che la chiave API sia attiva.
402insufficient_credits
Aggiungi crediti o riduci il costo del task. La risposta potrebbe indicare i crediti richiesti e quelli effettivamente disponibili.
403forbidden
Verifica le limitazioni a livello di account descritte nel messaggio di errore.
404not_found
Verifica l'ID del task e accertati che la chiave appartenga all'utente che ha avviato il task.
429rate_limited
Attendi l'intervallo indicato in Retry-After prima di effettuare un nuovo tentativo.
500internal_error
Verifica il messaggio d'errore e i log delle API. Riprova con attenzione: l'invio ripetuto di una richiesta di creazione può generare un nuovo task addebitabile.

Limiti di frequenza

Creazione task: per impostazione predefinita, ciascuna chiave API consente fino a 100 richieste al minuto. Al momento non sono disponibili limiti di frequenza personalizzati.

Interrogazione task: per impostazione predefinita, ciascuna chiave API consente fino a 120 richieste al minuto. Le richieste di interrogazione e quelle di creazione dei task vengono conteggiate separatamente.

La risposta HTTP 429 include Retry-After: 60 per la creazione e Retry-After: 5 per le query. Applica un backoff ed evita di interrogare lo stato con una frequenza eccessiva.