SimpliGen Docs
AI Agents

Riferimento API di controllo

L'API HTTP locale che SimpliGen espone sul tuo computer, per creare integrazioni personalizzate ed eseguire generazioni in modalità headless.

SimpliGen esegue una piccola API HTTP di controllo sul tuo computer mentre l'app è aperta. È la stessa API con cui il server MCP comunica, esposta direttamente in modo da poter controllare SimpliGen dai tuoi script, servizi o agent personalizzati, anche con l'app minimizzata nella system tray.

MCP vs l'API di controllo

Se vuoi solo che un agent IA (Claude, Codex, ecc.) usi SimpliGen, configura il server MCP invece, che racchiude questa API. Usa l'API di controllo direttamente quando stai scrivendo un'integrazione personalizzata in qualsiasi linguaggio.

URL di base e scoperta

Il server si collega solo a loopback e per impostazione predefinita a:

http://127.0.0.1:48199

Se quella porta è occupata, SimpliGen ritorna a una porta assegnata dal SO. La porta corrente (e la versione API) è sempre scritta in un file di scoperta nella directory dati dell'app:

# Windows
%APPDATA%\simpligen\agent-api.json
# macOS
~/Library/Application Support/simpligen/agent-api.json
# Linux
~/.config/simpligen/agent-api.json
agent-api.json
{ "port": 48199, "version": 1 }

Leggi questo file per trovare la porta live invece di codificare 48199.

Requisiti

L'API di controllo funziona solo quando l'app è aperta e il computer è autorizzato per l'accesso degli agent (fa parte della tua licenza). Le richieste vengono servite solo quando l'header Host è un alias di loopback; qualsiasi altro valore riceve 403 forbidden_host (una guardia anti-DNS-rebinding).

Autenticazione

Ogni endpoint tranne GET /health richiede un token di abbinamento nell'header Authorization:

Authorization: Bearer sg-agent-xxxxxxxx...

Crea un token nell'app in Impostazioni → Collega un agent (vedi Collega un agent). Il token grezzo è mostrato una sola volta; solo un hash viene memorizzato. Ogni token può avere un optional limite di spesa per le generazioni cloud. Revocare un token nell'app ha effetto immediato.

Un token mancante o non valido restituisce 401 unauthorized.

Convenzioni

  • Richieste: corpi JSON (Content-Type: application/json), fino a 50 MB.
  • Risposte: sempre JSON.
  • Errori: le risposte non-2xx hanno la forma { "errorCode": "...", "message": "..." }.
  • ID: i preset sono indirizzati da presetId (+ optional packId); i job da jobId.

Una chiamata autenticata minimale:

TOKEN="sg-agent-..."
curl -s http://127.0.0.1:48199/status -H "Authorization: Bearer $TOKEN"

Salute

GET /health

Sonda di vitalità. Nessuna autenticazione.

{ "ok": true, "name": "simpligen", "version": 1 }

Capacità

GET /capabilities

Elenca ogni preset con cui puoi generare, un elemento per (preset, mediaType), con i suoi input, opzioni, disponibilità locale e idoneità/costo cloud.

{
  "capabilities": [
    {
      "packId": "local-core-pack",
      "presetId": "z-image-turbo",
      "mediaType": "image",
      "name": "Z-Image Turbo",
      "description": "Ultra-fast, high-quality images in seconds",
      "apiProvider": null,
      "inputs": {
        "acceptsPrompt": true,
        "requiresPrompt": true,
        "requiresImage": false,
        "acceptsReferenceImages": null,
        "acceptsVideo": false,
        "acceptsAudio": false,
        "acceptsReferenceVideos": false,
        "acceptsReferenceAudios": false,
        "supportsLoras": true
      },
      "options": {
        "steps": null,
        "cfg": null,
        "duration": null,
        "resolution": null,
        "aspectRatio": ["1:1", "3:4", "4:3", "9:16", "16:9"]
      },
      "cloudAliasTo": null,
      "localReady": true,
      "cloudEligible": true,
      "cloudCost": 4
    }
  ]
}
CampoSignificato
localReadyTutti i file del modello sono installati; il preset può funzionare localmente adesso.
cloudEligibleIl preset può essere eseguito su SimpliGen Cloud.
cloudCostCosto approssimativo in crediti per un'esecuzione su cloud (null se non idoneo).
apiProviderNon-null per i preset API esterni (es. OpenAI, Google) che l'API di controllo non può inviare.
inputs / optionsCiò che il preset accetta e gli intervalli di opzioni/proporzioni che puoi passare a POST /generate. steps/cfg sono non-null solo per i preset che espongono controlli avanzati.
promptFamilyLa famiglia della guida di prompting per questo preset (per es. z-image), o null quando nessuna è dichiarata. GET /prompt-guide/:presetId restituisce la guida.
inputs.requiresPromptfalse per i preset le cui istruzioni sono integrate (ritagli, scambi di testa o outfit, upscale): un prompt vuoto è valido, e qualsiasi testo che invii è aggiunto come note extra.

Stato

GET /status

{
  "engineRunning": true,
  "engineVersion": "v0.26.0",
  "cloudConnected": true,
  "creditBalance": 1280,
  "activeProject": { "id": "default", "name": "My Project" },
  "characters": { "enabled": true, "base": 1, "edit": 1, "i2v": 1, "enhancePresets": 2 }
}

POST /engine/start

Avvia il motore locale quando non è già in esecuzione. Non accetta body.

{ "engineRunning": true, "engineVersion": "v0.37.0", "engineStarting": false }

Un avvio a freddo richiede più tempo di quello che la richiesta aspetta. Quando ciò accade la risposta è 202 con engineStarting: true e il motore continua l'avvio, quindi esegui il polling di GET /status finché engineRunning non è true.

Avviare un motore che è già in esecuzione restituisce 200 con alreadyRunning: true e non cambia nulla. Se nessun motore è installato la risposta è 409 engine_not_installed: installarne uno è un download di diversi gigabyte e rimane un lavoro per l'app, non per l'API. Una macchina su cui il motore rifiuta di funzionare risponde 409 engine_unsupported_hardware, che i nuovi tentativi non risolveranno.

POST /engine/stop

Arresta il motore locale e libera la sua VRAM. La generazione cloud non è interessata. Arrestare un motore che è già fermo è un successo.

POST /engine/restart

Lo arresta e lo avvia di nuovo, per un motore bloccato o dopo che un nodo personalizzato è stato installato o rimosso. Stesso comportamento 202 di start quando l'avvio dura più della richiesta.

Progetti

I progetti sono i contenitori che contengono le generazioni.

GET /projects

{ "projects": [ { "id": "default", "name": "My Project", "slug": "my-project" } ] }

POST /projects

Request
{ "name": "Campaign assets" }

Restituisce 201 con { "project": { ... } }. name è obbligatorio (altrimenti 400 invalid_options).

Caricamenti

Gli input (immagini sorgente, immagini di riferimento, video sorgente) non vengono mai passati come percorsi locali. Carica prima i byte e passa l'handle restituito a POST /generate.

POST /uploads

Request
{ "filename": "ref.png", "dataBase64": "<base64 of the file bytes>" }
Response (201)
{ "handle": "a1b2c3d4.png", "sizeBytes": 51234 }

Il caricamento massimo è di 100 MB (413 asset_too_large). Estensioni non supportate restituiscono 400 unsupported_file_type.

Genera

POST /generate

Mette in coda una generazione e restituisce immediatamente un jobId. Esegui il polling di GET /jobs/:id (vedi Jobs) per il risultato.

Request
{
  "presetId": "z-image-turbo",
  "packId": "local-core-pack",
  "mediaType": "image",
  "prompt": "a red fox in the snow, cinematic",
  "backend": "auto",
  "project": "default",
  "image": "a1b2c3d4.png",
  "referenceImages": [{ "handle": "e5f6.png", "label": "style" }],
  "loras": [
    { "name": "RoomLora", "weight": 0.85 },
    { "name": "Mia", "weight": 0.75 }
  ],
  "options": { "aspectRatio": "16:9", "steps": 8, "negativePrompt": "blurry, watermark" }
}
CampoObbligatorioNote
presetIdsìDa GET /capabilities.
mediaTypesì"image" o "video".
packIdnoSe fornito, deve corrispondere al pack del preset.
promptcondizionaleObbligatorio a meno che il preset non riporti inputs.requiresPrompt: false. Questi preset hanno le loro istruzioni integrate: invia "" per eseguirli così come sono, o aggiungi testo per passare note extra.
backendno"auto" (predefinito), "local", o "cloud". Auto preferisce local se installato, altrimenti cloud se connesso.
imagecondizionaleHandle di caricamento. Obbligatorio per i preset image-to-X (inputs.requiresImage).
videocondizionaleHandle di caricamento, per i preset con input video.
referenceImagescondizionaleArray di handle o { handle, label }, per i preset con immagini di riferimento.
audiocondizionaleHandle di caricamento, per i preset azionati da audio (sincronizzazione delle labbra, audio-to-video). Obbligatorio quando il preset riporta acceptsAudio, altrimenti il job è rifiutato con needs_audio.
audioStartSecondsnoDove nella traccia iniziare, in secondi. Anche accettato sotto options.
referenceVideoscondizionaleArray di handle o { handle, soundtrackMode, durationSeconds }, per i preset con clip di riferimento.
referenceAudioscondizionaleArray di handle o { handle, durationSeconds }, per i preset con audio di riferimento.
lorasnoArray di { name, weight } da applicare, per i preset dove inputs.supportsLoras è true. name corrisponde al nome visualizzato di una LoRA (o al nome file) da GET /loras; weight predefinito sulla forza predefinita della LoRA. I nomi sconosciuti restituiscono 400 unknown_lora. Solo backend locale per ora.
projectnoProject id o slug. Per impostazione predefinita il progetto attivo.
options.aspectRationoDeve essere una delle proporzioni supportate dal preset.
options.steps / options.cfgnoEntro gli intervalli pubblicizzati dal preset.
options.negativePromptnoTermini negativi extra (il negativo delle Opzioni Avanzate dell'UI). Anche accettato al livello superiore come negativePrompt. Additivo: il negativo predefinito del preset è sempre applicato e i tuoi termini sono aggiunti dopo (, ). Non inviare nulla per usare il negativo predefinito del preset. Sulle esecuzioni su SimpliGen Cloud i termini extra non vengono inviati, e il negativo predefinito del preset è usato così com'è.
options.durationSecondsnoDurata del video.
options.resolutionnoEtichetta del livello di risoluzione.
Response (201)
{ "jobId": "gen_abc123", "backend": "local", "status": "queued" }

Per un job cloud la risposta include anche "cloudCost": <credits>.

Backend

I preset API esterni (dove apiProvider è non-null, es. GPT Image 2, Veo) non possono essere inviati qui, riceverai 400 unsupported_backend. Usa un preset locale o SimpliGen Cloud. Cloud richiede un account connesso (400 cloud_not_connected); locale richiede i modelli installati (400 preset_not_installed, preparali prima).

GET /loras

Elenca le LoRA installate dell'utente in modo che gli agent possano scoprire cosa passare nell'array loras di POST /generate. Abbina su name (il nome visualizzato).

Response
{
  "loras": [
    { "name": "RoomLora", "filename": "RoomLora_000002400.safetensors", "baseModel": "flux", "triggerWords": "a room", "defaultStrength": 0.9 },
    { "name": "Mia", "filename": "mia_v2.safetensors", "baseModel": "flux", "triggerWords": "mia", "defaultStrength": 1.0 }
  ]
}

Passa la LoRA dove si adatta al modello di base del preset (baseModel), e usa le sue trigger word nel tuo prompt in modo che si attivi.

Guide di prompting

GET /prompt-guide/:presetId

Restituisce la guida di prompting per un preset: come il suo modello legge un prompt, la struttura e la lunghezza che preferisce, la terminologia di camera e movimento, i negativi, come descrivere i personaggi, e esempi funzionanti. Leggila prima di scrivere il prompt per POST /generate. Le guide sono servite da SimpliGen e messe in cache, quindi funzionano anche offline dall'ultima copia di ogni guida che è stata aperta prima.

Response (200)
{
  "presetId": "z-image-turbo",
  "family": "z-image",
  "familyName": "Z-Image",
  "version": 1,
  "generic": false,
  "text": "# Z-Image prompting guide ...\n\n## Negative prompts in SimpliGen\n...\n\n## Notes for this preset\n\n..."
}
CampoSignificato
family / familyNameLa famiglia della guida a cui il preset si risolve, e il suo nome visualizzato (vedi promptFamily su GET /capabilities).
versionLa versione della guida di questa famiglia.
generictrue quando non esiste una guida specifica del modello per questo preset. Il text allora lo dice chiaramente e dà solo consiglio generale.
textLa guida della famiglia in Markdown, seguita da una sezione ## Negative prompts in SimpliGen che ogni guida condivide. Quando il preset ha sue note, una sezione ## Notes for this preset è aggiunta.
HTTPerrorCodeQuando
404unknown_presetNessun preset con quell'id.
503guides_unavailableLe guide non potevano essere caricate e nessuna copia in cache esiste: "Prompt guides could not be loaded. Check the internet connection and try again."

Job

GET /jobs/:id

{
  "job": {
    "jobId": "gen_abc123",
    "status": "completed",
    "backend": "local",
    "mediaType": "image",
    "presetId": "z-image-turbo",
    "projectId": "default",
    "resultUrl": "local-file:///C:/Users/you/.../output.png",
    "resultPath": "C:/Users/you/.../output.png",
    "errorMessage": null,
    "createdAt": "2026-06-25T20:00:00.000Z",
    "completedAt": "2026-06-25T20:00:08.000Z"
  }
}

status è uno di queued, processing, completed, failed. Su successo, resultPath è il percorso del file locale decodificato; su fallimento, errorMessage spiega perché. Un id sconosciuto restituisce 404 job_not_found.

GET /jobs

Restituisce i 25 job più recenti come { "jobs": [ ...job... ] }.

POST /jobs/:id/cancel

Annulla un job in coda/in esecuzione. Restituisce { "jobId", "status", "note?" }. Un job cloud già in volo potrebbe ancora completarsi sul server (annotato in note).

Preparazione dei preset

I preset locali scaricano i loro file modello al primo utilizzo. Puoi prepararli in anticipo.

POST /presets/prepare

Request
{ "presetId": "z-image-turbo", "mediaType": "image" }

Restituisce 200 { "status": "already_installed" } o 202 { "status": "started" } (il download funziona in background).

GET /presets/prepare

Restituisce i download in volo: { "downloads": [ ... ] }. Esegui il polling di questo, o di GET /capabilities (osserva localReady), finché il preset non è pronto.

Personaggi

Character Studio è scrivibile anche. I personaggi sono solo locali (il cloud è rifiutato). Vedi Personaggi per i concetti.

EndpointScopo
GET /charactersElenca i personaggi.
GET /characters/:idOttieni un personaggio.
GET /character-presetsPreset di personaggio installati (base / edit / i2v).
GET /character-featuresOpzioni di feature di identità/aspetto disponibili.
POST /charactersCrea un personaggio (mode: "generate" da una descrizione, o "upload" da un handle di immagine di base caricata).
POST /characters/:id/generate-imageGenera un'immagine del personaggio ({ prompt, aspect?, count?, presetId? }).
POST /characters/:id/generate-frameGenera un singolo frame di inizio video.
POST /characters/:id/animateAnima il personaggio in un video.
POST /characters/:id/presetImposta il preset predefinito del personaggio.
POST /characters/:id/enhanceUpscale o migliora un asset di personaggio. Nomina la sorgente con esattamente uno di target: "base", jobId (una generazione precedente), o handle (da POST /uploads). Optional: mediaType, presetId, scale, keepResolution, applyAsBase.

Tutti gli endpoint di generazione restituiscono un jobId che esegui il polling via GET /jobs/:id, proprio come POST /generate.

Ricette

Crea ricette multi-step (flussi) dai pack e dai preset. Scopri i blocchi di costruzione, componi da una specifica di alto livello, poi facoltativamente pubblica.

EndpointScopo
GET /recipe-blocksPunti di ingresso + ogni preset utilizzabile come step, con il suo contratto di porta.
POST /recipes/validateProva a secco di una spec (componi+valida) o un config, senza salvare. Restituisce validation.
POST /recipesComponi da una spec e salva una bozza. Restituisce { recipeId, valid, errors, config }.
GET /recipesElenca ogni ricetta su questo device (installata dallo Store o creata qui) con i suoi inputs (chiave, tipo, etichetta, obbligatorio, opzioni) e numero di step.
GET /recipes/:idOttieni una ricetta, la sua config completa, i suoi inputs, e readiness (per ogni step: quale preset esegue e se è installato localmente).
POST /recipes/:id/runEsegui una ricetta. Body: { inputs: { key: value }, engine?: "local" | "cloud" | "auto" }. Gli input dei soggetti accettano un id di personaggio o prodotto, gli input di immagine/video/audio accettano handle di caricamento, tutto il resto accetta valori semplici. Restituisce { runId, status: "running", engine, steps, cloudCost? }. Le esecuzioni su cloud sono prezzate in anticipo e contano contro il limite di spesa del token.
GET /recipes/:id/runsEsecuzioni recenti di una ricetta, la più nuova per prima.
GET /recipe-runs/:idStato di un'esecuzione: status (running, completed, failed, cancelled), steps (ognuno con status, id del job e percorso del risultato) e resultPath quando l'ultimo step media è completato.
POST /recipe-runs/:id/cancelFerma un'esecuzione. Nessuno step ulteriore inizia; uno step locale in volo è interrotto.
POST /recipes/:id/publishInvia al Creator Marketplace (richiede un account connesso).

Prodotti e soggetti

Un input subject di una ricetta accetta un personaggio o un prodotto. I prodotti sono l'altro tipo di soggetto: una cosa denominata con una foto di base, usata da Product Studio e dalle ricette UGC.

EndpointScopo
GET /subjectsOgni soggetto che una ricetta può accettare: personaggi e prodotti (id, type, name, status).
GET /productsElenca i prodotti.
GET /products/:idOttieni un prodotto.
POST /productsCrea un prodotto da una foto caricata: { name, image: <upload handle>, description?, category? }. La descrizione e la categoria sono tessute nei prompt delle ricette. Restituisce { productId, product }.
DELETE /products/:idRimuovi un prodotto e la sua foto.

Una spec è una descrizione di alto livello; l'app auto-collega le porte, la catena media step-by-step, e un input di prompt per ogni step, poi valida.

POST /recipes request
{
  "spec": {
    "name": "Product to spinning video",
    "category": "product",
    "steps": [
      { "preset": "krea2-pack:krea2-turbo" },
      { "preset": "wan-2.2-video-pack:wan-2.2-i2v" }
    ]
  }
}
Response (201)
{
  "recipeId": "b1f2…",
  "valid": true,
  "errors": [],
  "config": { "blocks": [ "…" ], "inputs": [ "…" ], "output": { "from": "n2.video" } }
}

Comporre e salvare non richiede un account creatore. POST /recipes/:id/publish richiede un account connesso e restituisce not_connected (con needsConnect: true) finché l'utente non ne connette uno nell'app; la stessa bozza allora pubblica senza modifiche. Ogni preset che la ricetta usa deve appartenere a un pack di prima parte distribuibile.

Video Studio

I film sono documenti di Video Studio: clip (scene da renderizzare) su una timeline su tracce audio. Ogni rotta di editing risponde con { change, timeline }: cosa è cambiato, e la timeline del film dopo (la stessa forma che GET /films/:id risponde). Con il film aperto nello studio il cambio è mostrato dal vivo e si annulla con Ctrl+Z; un film chiuso è modificato e salvato.

Le clip sono nominate nel percorso per id, per nome, o per numero (il loro ordine sulla timeline, il più antico per primo). I tempi sono secondi, o battute una volta che il film ha un tempo: una posizione è 3, { "seconds": 3 } o { "bar": 5 } (la battuta 1 è il primo downbeat), una lunghezza è 5, { "seconds": 5 } o { "bars": 2 }.

RottaCosa fa
GET /films?projectId=Film di un progetto (predefinito: quello corrente).
POST /filmsCrea un film: name, projectId opzionale, aspect (16:9, 9:16, 1:1), quality (480p, 720p, 1080p), renderOn (local, cloud), presets ({ t2v, i2v, r2v }). Risponde la timeline.
GET /films/:idLa timeline.
PATCH /films/:idImpostazioni del film: aspect, quality, hires2x, renderOn, presets, subject, cast (nomi o id), location (nome, id o null).
POST /films/:id/tracksAggiungi una traccia: upload (un handle da POST /uploads), kind (singing, music, dialogue, effects), name, at.
PATCH /films/:id/tracks/:trackat, muted, volume (0 a 1).
POST /films/:id/tempoRileva il tempo dalla traccia non silenziata più lunga, o track. Risponde { bpm, offset, track, timeline }.
POST /films/:id/clipsAggiungi una clip: at, length, name, lane.
PATCH /films/:id/clips/:clipshots (ognuno { prompt, seconds, line, speaker, framing }), cast, location ("none" elimina quella del film, "film" la eredita di nuovo), link (fresh, continue, motion; anche none e frame sono accettati, come fresh e continue), hears ([{ track, on }]), preset.
POST /films/:id/clips/:clip/moveat, lane.
POST /films/:id/clips/:clip/trimlength, trimIn (dove la clip inizia dentro la presa; 0 è l'inizio della presa).
DELETE /films/:id/clips/:clipRimuovi la clip.
POST /films/:id/planStendi una bozza (sotto).
POST /films/:id/fadestarget (una clip o una traccia), fadeIn, fadeOut.
POST /films/:id/markersat, name.
POST /films/:id/export-rangefrom e to (entrambi necessari), o clear: true.
POST /films/:id/rendersRenderizza clips ("stale", il predefinito, o una lista). Risponde 202 con { started, held, credits } subito, o 200 con una note quando nulla ha bisogno di un render.
GET /films/:id/clips/:clip/takesLe prese della clip, la più nuova per prima.
POST /films/:id/clips/:clip/takegenerationId: rendi quella presa quella che la clip mostra.
POST /films/:id/exportUnisci il film. Risponde 201 con { path, resultUrl, blanks }.

Stendere una bozza

POST /films/:id/plan
{
  "mode": "append",
  "cast": ["Kai", "Mira"],
  "location": "Rooftop",
  "clips": [
    { "bars": 2, "shots": [{ "prompt": "@Kai looks over the city", "framing": "wide" }] },
    { "bars": 2, "link": "continue",
      "shots": [{ "prompt": "@Kai sings to camera", "line": "Neon rain", "speaker": "Kai", "framing": "close-up" }] },
    { "bars": 3, "location": "Neon Street", "cast": ["Mira"],
      "shots": [{ "prompt": "@Mira walks through the rain", "seconds": 4 }, { "prompt": "she turns", "seconds": 3 }] }
  ]
}

Il piano è controllato come un tutto per primo. Un piano con problemi risponde 400 invalid_plan con ogni problema in details.problems (ognuno prefissato con la sua clip, come clip 2: ...) e non cambia nulla. mode: "replace" sostituisce ogni clip ed è rifiutato quando le clip hanno prese a meno che "discardTakes": true.

Render e il limite di spesa

Un render su cloud è prezzato prima che qualsiasi cosa sia messa in coda e conta contro il limite di spesa del token: superare il limite risponde 402 exceeds_spend_cap, un prezzo sconosciuto risponde 503 cost_unknown. Le clip che continuano dalla clip precedente si renderizzano una alla volta, ognuna dopo la presa da cui inizia; la chiamata risponde subito, e GET /films/:id mostra il take di ogni clip: none, rendering, current, edited, longer, unknown (non può ancora essere stabilito) o imported (un video portato dentro, mai renderizzato).

Posizioni

RottaCosa fa
GET /locationsLe posizioni della Libreria: id, name, description, hasPicture.
POST /locationsCrea una posizione dalla sua immagine: name, description, e upload (un handle) o fromJob (un job di immagine finito).

Limiti di spesa

Quando un token ha un limite di spesa, le generazioni su cloud sono prezzate prima dell'invio e rifiutate se supererebbero l'allowance rimanente (402 exceeds_spend_cap). Se il costo non può essere determinato (stato cloud non disponibile), un token limitato fallisce in chiusura con 503 cost_unknown. Le generazioni locali sono sempre libere da costo di credito.

Un flusso completo

BASE=http://127.0.0.1:48199
AUTH="Authorization: Bearer sg-agent-..."

# 1. Pick a ready preset
curl -s $BASE/capabilities -H "$AUTH"

# 2. Generate
JOB=$(curl -s $BASE/generate -H "$AUTH" -H 'Content-Type: application/json' \
  -d '{"presetId":"z-image-turbo","mediaType":"image","prompt":"a red fox in the snow","options":{"aspectRatio":"16:9"}}' \
  | jq -r .jobId)

# 3. Poll until done, then read resultPath
curl -s $BASE/jobs/$JOB -H "$AUTH" | jq '.job | {status, resultPath, errorMessage}'

Codici di errore

HTTPerrorCodeQuando
400invalid_jsonIl body non è JSON valido.
400invalid_optionsUn campo obbligatorio è mancante o malformato.
400invalid_presetMismatch di preset/pack/mediaType.
400needs_*Un input obbligatorio (prompt, immagine, riferimenti) è mancante.
400invalid_handleUn input non era un handle di caricamento valido.
400unsupported_backendIl preset viene eseguito su un'API esterna.
400preset_not_installedBackend locale scelto ma i modelli non sono installati.
400cloud_not_connectedBackend cloud scelto ma nessun account è connesso.
400invalid_planUn piano di film ha problemi; details.problems li elenca tutti.
400no_tempoUn tempo in battute prima che il film abbia un tempo; rileva il tempo per primo.
400no_audioTempo richiesto di un film senza traccia audio.
400no_pulseNessun beat costante poteva essere sentito nella traccia.
401unauthorizedToken mancante o non valido.
402exceeds_spend_capIl costo cloud supera il limite di spesa del token.
402exceeds_balanceIl saldo cloud non copre i render.
403forbidden_hostHeader Host non-loopback.
403studio_not_installedVideo Studio non è installato su questo computer.
404not_found / invalid_preset / job_not_foundRotta sconosciuta, preset, o job.
404unknown_presetGET /prompt-guide/:presetId con un id che non è un preset.
404film_not_foundNessun film con quell'id.
404clip_not_foundNessuna clip per quell'id, nome o numero.
404track_not_foundNessuna traccia per quel nome o id.
404cast_not_foundNessun personaggio per quel nome o id nella Libreria.
404location_not_foundNessuna posizione per quel nome o id, o non ha ancora una foto.
409clips_not_readyExport richiesto mentre le clip hanno ancora bisogno di un render; details.clips le nomina.
413asset_too_largeCaricamento sopra 100 MB.
503guides_unavailableLe guide di prompt non potevano essere caricate e nessuna è in cache.
503cost_unknownToken limitato; il costo cloud non poteva essere determinato.
503studio_busyLa finestra SimpliGen non poteva essere raggiunta o non ha risposto in tempo. Se è andata in timeout, il cambio potrebbe ancora essere stato fatto: leggi il film prima di riprovare.
500internal_errorErrore del server inaspettato.