Control API referansı
SimpliGen'in makinenizde gösterdiği yerel HTTP API, özel entegrasyonlar oluşturmak ve nesli başsız çalıştırmak için.
SimpliGen, uygulama açıkken makinenizde küçük bir HTTP Control API çalıştırır. Bu, MCP sunucusunun konuştuğu aynı API olup, doğrudan SimpliGen'i kendi betikleri, hizmetleri veya ajanlardan yönlendirebilmeniz için sunulur, uygulama sistem tepsisine küçültülü halde bile.
MCP vs Control API
Sadece bir yapay zeka ajanının (Claude, Codex, vb.) SimpliGen'i kullanmasını istiyorsanız, bunun yerine MCP sunucusunu kurun, bu API'ı sarar. Control API'ı doğrudan herhangi bir dilde özel entegrasyon yazarken kullanın.
Base URL ve keşif
Sunucu sadece geri döngü bağlantısına bağlanır ve varsayılan olarak şu adrestir:
http://127.0.0.1:48199Eğer o port meşgulse, SimpliGen işletim sistemi tarafından atanan bir porta geri döner. Geçerli port (ve API sürümü) her zaman uygulamanın kullanıcı veri dizinindeki bir keşif dosyasına yazılır:
# Windows
%APPDATA%\simpligen\agent-api.json
# macOS
~/Library/Application Support/simpligen/agent-api.json
# Linux
~/.config/simpligen/agent-api.json{ "port": 48199, "version": 1 }48199 sabit kodlamak yerine canlı portu bulmak için bu dosyayı okuyun.
Gereksinimler
Control API sadece uygulama açık olduğunda ve makine ajan erişimine yetkili olduğunda çalışır (lisansınızın bir parçasıdır). İstekler sadece Host başlığı bir geri döngü takma adı olduğunda sunulur, başka hiçbir şey 403 forbidden_host alır (bir DNS yeniden bağlama koruması).
Kimlik Doğrulama
GET /health hariç her uç nokta Authorization başlığında bir eşleştirme jetonu gerektirir:
Authorization: Bearer sg-agent-xxxxxxxx...Ayarlar → Ajan Bağla altında uygulamada bir jeton oluşturun (bkz. Ajan Bağla). Ham jeton bir kez gösterilir, sadece bir karma depolanır. Her jeton, bulut nesli için isteğe bağlı bir harcama limiti taşıyabilir. Uygulamada bir jetonu iptal etmek hemen etkili olur.
Eksik veya geçersiz jeton 401 unauthorized döndürür.
Kurallar
- İstekler: JSON gövdeleri (
Content-Type: application/json), en fazla 50 MB. - Yanıtlar: her zaman JSON.
- Hatalar: 2xx olmayan yanıtların şekli
{ "errorCode": "...", "message": "..." }. - Kimlikler: ön ayarlar
presetId(+ isteğe bağlıpackId) ile adreslendirilir, işlerjobIdile.
Minimum kimlik doğrulamalı çağrı:
TOKEN="sg-agent-..."
curl -s http://127.0.0.1:48199/status -H "Authorization: Bearer $TOKEN"Sağlık
GET /health
Canlılık sondası. Kimlik doğrulama yok.
{ "ok": true, "name": "simpligen", "version": 1 }Yetenekler
GET /capabilities
Oluşturabileceğiniz her ön ayarı listeler, her bir (preset, mediaType) başına bir giriş, giriş, seçenekler, yerel hazırlığı ve bulut uygunluğu/maliyeti ile.
{
"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
}
]
}| Alan | Anlam |
|---|---|
localReady | Tüm model dosyaları yüklüdür, ön ayar şimdi yerel olarak çalıştırılabilir. |
cloudEligible | Ön ayar SimpliGen Cloud üzerinde çalıştırılabilir. |
cloudCost | Bir bulut çalışması için yaklaşık kredi maliyeti (uygun değilse null). |
apiProvider | Dış API ön ayarları için null olmayan (ör. OpenAI, Google) bu Control API dağıtamaz. |
inputs / options | Ön ayarın kabul ettiği şey ve POST /generate için iletebileceğiniz seçenek aralıkları/en boy oranları. steps/cfg sadece gelişmiş kontrolleri gösterin ön ayarlar için null olmayan değerlerdir. |
promptFamily | Bu ön ayar için ipucu verme rehberi ailesi (örneğin z-image), veya hiçbiri beyan edilmemiş olduğunda null. GET /prompt-guide/:presetId rehberi döndürür. |
inputs.requiresPrompt | Yerleşik talimatları olan ön ayarlar için false (kırpma, baş veya kıyafet takası, ölçeklendirme): boş prompt geçerlidir ve göndereceğiniz herhangi bir metin ekstra notlar olarak eklenir. |
Durum
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
Yerel motor zaten çalışmıyorken başlatır. Gövde almaz.
{ "engineRunning": true, "engineVersion": "v0.37.0", "engineStarting": false }Soğuk bir önyükleme, isteğin beklediğinden daha uzun sürer. Bu gerçekleştiğinde yanıt 202 ile engineStarting: true ve motor önyüklemeye devam eder, bu nedenle GET /status engineRunning doğru olana kadar yoklayın.
Zaten çalışan bir motoru başlatmak 200 ile alreadyRunning: true döndürür ve hiçbir şeyi değiştirmez. Motor yüklü değilse yanıt 409 engine_not_installed: yüklemek multi gigabayt indirme olup uygulama için bir iş değil, API için değil. Motorun çalışmayı reddettiği bir makine 409 engine_unsupported_hardware yanıtı verir, bu yeniden denemek düzeltmez.
POST /engine/stop
Yerel motoru durdurur ve VRAM'ını serbest bırakır. Bulut nesli etkilenmez. Zaten kapalı olan bir motoru durdurmak bir başarıdır.
POST /engine/restart
Onu durdurur ve yeniden başlatır, kilitli bir motor için veya özel bir node yüklendikten veya kaldırıldıktan sonra. Başlatma sırasında 202 davranışı ile aynı, önyükleme istek daha uzun olduğunda.
Projeler
Projeler nesli tutan kaplarıdır.
GET /projects
{ "projects": [ { "id": "default", "name": "My Project", "slug": "my-project" } ] }POST /projects
{ "name": "Campaign assets" }201 ile { "project": { ... } } döndürür. name gereklidir (aksi takdirde 400 invalid_options).
Yüklemeler
Girişler (kaynak görüntüler, referans görüntüler, kaynak videolar) asla yerel yollar olarak geçirilmez. Baytları önce yükleyin ve döndürülen tanıtıcıyı POST /generate öğesine geçirin.
POST /uploads
{ "filename": "ref.png", "dataBase64": "<base64 of the file bytes>" }{ "handle": "a1b2c3d4.png", "sizeBytes": 51234 }Maksimum yükleme 100 MB'tır (413 asset_too_large). Desteklenmeyen uzantılar 400 unsupported_file_type döndürür.
Oluştur
POST /generate
Bir nesil sıraya koyar ve hemen bir jobId ile döner. İşin sonucu için GET /jobs/:id yoklayın (bkz. İşler).
{
"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" }
}| Alan | Gerekli | Notlar |
|---|---|---|
presetId | evet | GET /capabilities öğesinden. |
mediaType | evet | "image" veya "video". |
packId | hayır | Verilirse, ön ayarın paketi eşleşmelidir. |
prompt | koşullu | Ön ayar inputs.requiresPrompt: false bildirmezse gereklidir. Bu ön ayarların yerleşik talimatları vardır: olduğu gibi çalıştırmak için "" gönderin veya ekstra notlar iletmek için metin ekleyin. |
backend | hayır | "auto" (varsayılan), "local" veya "cloud". Auto, yüklü ise yerel tercih eder, aksi takdirde bağlı ise bulut tercih eder. |
image | koşullu | Yükleme tutamacı. Görüntü-to-X ön ayarları için gereklidir (inputs.requiresImage). |
video | koşullu | Video giriş ön ayarları için yükleme tutamacı. |
referenceImages | koşullu | Referans görüntü ön ayarları için tutamaçlar veya { handle, label } dizisi. |
audio | koşullu | Ses destekli ön ayarlar için yükleme tutamacı (dudak senkronizasyonu, ses-video). Ön ayar acceptsAudio bildirdiğinde gereklidir, aksi takdirde iş needs_audio ile reddedilir. |
audioStartSeconds | hayır | Parçada başlayabileceği yer, saniye cinsinden. options altında da kabul edilir. |
referenceVideos | koşullu | Referans klip ön ayarları için tutamaçlar, tutamaç veya { handle, soundtrackMode, durationSeconds } dizisi. |
referenceAudios | koşullu | Referans ses ön ayarları için tutamaçlar veya { handle, durationSeconds } dizisi. |
loras | hayır | Uygulanacak { name, weight } dizisi, inputs.supportsLoras doğru olan ön ayarlar için. name, LoRA'nın görünen adı (veya dosya adı) GET /loras ile eşleşir, weight LoRA'nın varsayılan gücü olarak varsayılır. Bilinmeyen adlar 400 unknown_lora döndürür. Şimdilik sadece yerel backend. |
project | hayır | Proje id veya slug. Etkin projeye varsayılır. |
options.aspectRatio | hayır | Ön ayarın desteklenen oranlarından biri olmalıdır. |
options.steps / options.cfg | hayır | Ön ayarın reklamı yapılan aralıkları içinde. |
options.negativePrompt | hayır | Ekstra negatif terimler (UI'nin Gelişmiş Seçenekler negatifi). negativePrompt olarak da üst düzeyde kabul edilir. Toplamsal: ön ayarın varsayılan negatifi her zaman uygulanır ve terimleriniz bundan sonra eklenir (, ). Ön ayar varsayılanını kullanmak için hiçbir şey göndermemeyin. SimpliGen Cloud çalışmalarında ekstra terimler gönderilmez ve ön ayarın varsayılan negatifi olduğu gibi kullanılır. |
options.durationSeconds | hayır | Video süresi. |
options.resolution | hayır | Çözünürlük katmanı etiketi. |
{ "jobId": "gen_abc123", "backend": "local", "status": "queued" }Bir bulut işi için yanıt ayrıca "cloudCost": <credits> içerir.
Arka uçlar
Dış API ön ayarları (burada apiProvider null olmayan, örneğin GPT Image 2, Veo)
burada dağıtılamaz, 400 unsupported_backend alırsınız. Yerel veya SimpliGen Cloud ön ayarını kullanın. Cloud bağlı bir hesap gerektirir
(400 cloud_not_connected), yerel ise modellerin yüklü olması gerekir
(400 preset_not_installed, önce hazırlayın).
GET /loras
Kullanıcının yüklü LoRA'larını listeler, böylece ajanlar POST /generate öğesinin loras dizisine neyi geçireceğini keşfedebilir. name (görünen ad) üzerinde eşleştirin.
{
"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 }
]
}LoRA'yı ön ayarın temel modeline (baseModel) uyduğu yerde geçirin ve onu etkinleştirmek için kendi tetik sözcüklerini istemlerinizde kullanın.
İpucu Rehberleri
GET /prompt-guide/:presetId
Ön ayar için ipucu kılavuzunu döndürür: modeli bir ipucuyu nasıl okur, yapıyı ve uzunluğu tercih eder, kamera ve hareket sözcükleri, negatifler, karakterleri nasıl sözcük oluşturur ve çalışılmış örnekler. POST /generate için prompt yazılmadan önce okuyun. Kılavuzlar SimpliGen tarafından sunulur ve önbelleğe alınır, bu nedenle çevrimdışı modda da çalışırlar, açılmadan önce her kılavuzun son kopyasından itibaren.
{
"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..."
}| Alan | Anlam |
|---|---|
family / familyName | Ön ayarın çözüldüğü rehber ailesi ve görünen adı (bkz. GET /capabilities öğesine promptFamily). |
version | Bu ailenin kılavuzunun sürümü. |
generic | Bu ön ayar için model özel rehberi yoksa doğru. text bunun açıkça söyler ve sadece genel tavsiye verir. |
text | Aile rehberi Markdown'da, ardından her rehberin paylaştığı ## Negative prompts in SimpliGen bölümü. Ön ayarın kendi notları varsa, bir ## Notes for this preset bölümü eklenir. |
| HTTP | errorCode | Ne zaman |
|---|---|---|
| 404 | unknown_preset | O id ile ön ayar yok. |
| 503 | guides_unavailable | Rehberler yüklenemedi ve önbelleğe alınan kopya yoktur: "Ipucu rehberleri yüklenemedi. İnternet bağlantısını kontrol edin ve yeniden deneyin." |
İşler
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 queued, processing, completed, failed öğesinden biridir. Başarısında,
resultPath çözülen yerel dosya yoludur, başarısızlıkta errorMessage nedenini açıklar. Bilinmeyen id 404 job_not_found döndürür.
GET /jobs
En son 25 işi { "jobs": [ ...job... ] } olarak döndürür.
POST /jobs/:id/cancel
Sıraya alınan/çalışan bir işi iptal eder. { "jobId", "status", "note?" } döndürür. Sunucuda uçuştaki bir bulut işi yine de tamamlanabilir (not'ta belirtilir).
Ön Ayarlar Hazırlama
Yerel ön ayarlar ilk kullanımda model dosyalarını indirir. Bunları önceden hazırlayabilirsiniz.
POST /presets/prepare
{ "presetId": "z-image-turbo", "mediaType": "image" }200 { "status": "already_installed" } veya 202 { "status": "started" } döndürür
(indirme arka planda çalışır).
GET /presets/prepare
Uçuştaki indirmeleri döndürür: { "downloads": [ ... ] }. Bu veya
GET /capabilities (izle localReady), ön ayar hazır olana kadar yoklayın.
Karakterler
Character Studio da komut dosyası uygulanabilir. Karakterler sadece yereldir (bulut reddedilir). Kavramlar için Karakterler bkz.
| Uç Nokta | Amaç |
|---|---|
GET /characters | Karakterleri listele. |
GET /characters/:id | Bir karakter al. |
GET /character-presets | Yüklü karakter ön ayarları (temel/düzenleme/i2v). |
GET /character-features | Kullanılabilir kimlik/görünüm özelliği seçenekleri. |
POST /characters | Karakter oluştur (mode: "generate" açıklama veya "upload" yüklü temel görüntü tutamacından). |
POST /characters/:id/generate-image | Karakterin görüntüsünü oluştur ({ prompt, aspect?, count?, presetId? }). |
POST /characters/:id/generate-frame | Tek bir video başlangıç çerçevesi oluştur. |
POST /characters/:id/animate | Karakteri video içine canlandır. |
POST /characters/:id/preset | Karakterin varsayılan ön ayarını ayarla. |
POST /characters/:id/enhance | Karakter varlığını ölçekle veya geliştir. Kaynağı tam olarak birini ile adlandır target: "base", jobId (önceki nesil) veya handle (POST /uploads öğesinden). İsteğe bağlı: mediaType, presetId, scale, keepResolution, applyAsBase. |
Tüm nesil uç noktaları, POST /generate gibi GET /jobs/:id aracılığıyla yokladığınız bir jobId döndürür.
Tarifeler
Paket ve ön ayarların dışında çok adımlı tarifeler (akışlar) yazın. Yapı taşlarını keşfedin, üst düzey bir spesifikasyondan oluşturun, ardından isteğe bağlı olarak yayınlayın.
| Uç Nokta | Amaç |
|---|---|
GET /recipe-blocks | Giriş noktaları + bir adım olarak kullanılabilir her ön ayar, bağlantı noktası sözleşmesi ile. |
POST /recipes/validate | Kuru çalışma spec (oluştur+doğrula) veya config, kaydetme yok. validation döndürür. |
POST /recipes | Bir spec den oluştur ve taslak kaydet. { recipeId, valid, errors, config } döndürür. |
GET /recipes | Bu cihazdaki her tarife listele (Store'dan yüklü veya burada yazılı) inputs (anahtar, tür, etiket, gerekli, seçenekler) ve adım sayısı ile. |
GET /recipes/:id | Bir tarife al, tam yapılandırması, inputs ve readiness (her adım başına: hangi ön ayarı çalıştırır ve yerel olarak yüklü olup olmadığı). |
POST /recipes/:id/run | Bir tarife çalıştır. Gövde: { inputs: { key: value }, engine?: "local" | "cloud" | "auto" }. Konu giriş karakteri veya ürün kimliği alır, görüntü/video/ses giriş yükleme tutamaçları alır, diğer her şey düz değerler alır. { runId, status: "running", engine, steps, cloudCost? } döndürür. Bulut çalışmaları önceden fiyatlandırılır ve jetonun harcama limitine karşı sayılır. |
GET /recipes/:id/runs | Tarifenin son çalışmaları, en yenisi önce. |
GET /recipe-runs/:id | Bir çalıştırmanın durumu: status (çalışan, tamamlanan, başarısız, iptal edildi), steps (her biri durum, iş kimliği ve sonuç yolu ile) ve resultPath son medya adımı tamamlandığında. |
POST /recipe-runs/:id/cancel | Bir çalıştırmayı durdur. Başka adım başlamaz, yerel uçuştaki adım kesilir. |
POST /recipes/:id/publish | Creator Marketplace'e gönder (bağlı bir hesap gerektirir). |
Ürünler ve Konular
Tarifenin subject giriş karakter veya ürün alır. Ürünler diğer konu türüdür: temel fotoğrafı olan, Product Studio ve UGC tarifeleri tarafından kullanılan adlandırılmış şey.
| Uç Nokta | Amaç |
|---|---|
GET /subjects | Tarifenin alabildiği her konu: karakterler ve ürünler (id, type, name, status). |
GET /products | Ürünleri listele. |
GET /products/:id | Bir ürün al. |
POST /products | Yüklü fotoğraftan ürün oluştur: { name, image: <upload handle>, description?, category? }. Açıklama ve kategori tarife istemlerine dokununur. { productId, product } döndürür. |
DELETE /products/:id | Ürünü ve fotoğrafını kaldır. |
Bir spec üst düzey açıklamadır, uygulama bağlantı noktalarını, adımdan adıma medya zincirini ve adım başına bir ipucu girişini otomatik olarak güçlendirir, ardından doğrular.
{
"spec": {
"name": "Product to spinning video",
"category": "product",
"steps": [
{ "preset": "krea2-pack:krea2-turbo" },
{ "preset": "wan-2.2-video-pack:wan-2.2-i2v" }
]
}
}{
"recipeId": "b1f2…",
"valid": true,
"errors": [],
"config": { "blocks": [ "…" ], "inputs": [ "…" ], "output": { "from": "n2.video" } }
}Oluşturma ve kaydetme, yaratıcı hesaba ihtiyaç duymaz. POST /recipes/:id/publish
bağlı bir hesap gerektirir ve not_connected döndürür (needsConnect: true ile)
kullanıcı uygulamada bir bağlanana kadar, aynı taslak daha sonra değişmez yayınlanır.
Tarifenin kullandığı her ön ayar dağıtılabilir birinci taraf pakete ait olmalıdır.
Video Studio
Filmler Video Studio belgeleridir: zaman çizelgesi üzerinde klipler (işlenecek çekimler) ses parçaları üzerinde. Her düzenleme yolu { change, timeline } yanıtı verir: ne değişti ve bundan sonra filmin zaman çizelgesi (GET /films/:id yanıtlayan aynı şekil). Stüdyo'da açık film değişiklik canlı gösterir ve Ctrl+Z ile geri alır, kapalı film düzenlenir ve kaydedilir.
Klipler yolda kimliğe, ada veya numaraya (zaman çizelgesinde sıraları, en erken önce) göre adlandırılır. Zamanlar saniye veya barlar film bir temposu once: bir konum 3, { "seconds": 3 } veya { "bar": 5 } (bar 1 ilk aşağı atışıdır), uzunluk 5, { "seconds": 5 } veya { "bars": 2 }.
| Rota | Ne yaptığı |
|---|---|
GET /films?projectId= | Projenin filmler (varsayılan: geçerli bir). |
POST /films | Film oluştur: name, isteğe bağlı projectId, aspect (16:9, 9:16, 1:1), quality (480p, 720p, 1080p), renderOn (local, cloud), presets ({ t2v, i2v, r2v }). Zaman çizelgesini yanıtlar. |
GET /films/:id | Zaman çizelgesi. |
PATCH /films/:id | Film ayarları: aspect, quality, hires2x, renderOn, presets, subject, cast (adlar veya kimlikler), location (ad, kimlik veya null). |
POST /films/:id/tracks | Parça ekle: upload (POST /uploads tutamacı), kind (singing, music, dialogue, effects), name, at. |
PATCH /films/:id/tracks/:track | at, muted, volume (0 ila 1). |
POST /films/:id/tempo | En uzun sessiz olmayan parçanın tempounu algıla veya track. { bpm, offset, track, timeline } yanıtı verir. |
POST /films/:id/clips | Klip ekle: at, length, name, lane. |
PATCH /films/:id/clips/:clip | shots (her { prompt, seconds, line, speaker, framing }), cast, location ("none" filmi bırakır, "film" yeniden miras alır), link (fresh, continue, motion, none ve frame de kabul edilir, sırasıyla fresh ve continue olarak), hears ([{ track, on }]), preset. |
POST /films/:id/clips/:clip/move | at, lane. |
POST /films/:id/clips/:clip/trim | length, trimIn (klibin çekmesinin içinde başladığı yer, 0 çekmesinin başlangıcıdır). |
DELETE /films/:id/clips/:clip | Klibi kaldır. |
POST /films/:id/plan | Taslak yerleş (aşağıda). |
POST /films/:id/fades | target (klip veya parça), fadeIn, fadeOut. |
POST /films/:id/markers | at, name. |
POST /films/:id/export-range | from ve to (her ikisi de gerekli) veya clear: true. |
POST /films/:id/renders | clips ("stale", varsayılan veya bir listesi) işle. Hemen 202 ile { started, held, credits } veya none bir şey oluşturulması gerektiğinde bir note ile 200 yanıtı verir. |
GET /films/:id/clips/:clip/takes | Klibin çekişleri, en yeni ilk. |
POST /films/:id/clips/:clip/take | generationId: bu çekimi klipin gösterdiğini yap. |
POST /films/:id/export | Film dik. 201 ile { path, resultUrl, blanks } yanıtı verir. |
Taslak Yerleştirme
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 }] }
]
}Plan bütün olarak önce denetlenir. Sorunları olan plan 400 invalid_plan ile details.problems (örneğin clip 2: ... ile ön eki her şey) ve hiçbir şeyi değiştirmez. mode: "replace" her klipi değiştirir ve klipler çekişleri olmadığı sürece reddedilir "discardTakes": true.
Oluşturur ve Harcama Limiti
Bulut işlemi önceden fiyatlandırılır ve jetonun harcama limitine karşı sayılır: üzeri sınır 402 exceeds_spend_cap yanıtı, bilinmeyen fiyat 503 cost_unknown. Önceki klipten devam eden klipler birer birer işlenir, her başladığı çekmesinden sonra, çağrı hemen yanıtı verir ve GET /films/:id her klibin take gösterir: none, rendering, current, edited, longer, unknown (henüz söylenebilir) veya imported (getirilen video, hiçbir zaman işlenmemiş).
Konumlar
| Rota | Ne yaptığı |
|---|---|
GET /locations | Kütüphanenin konumları: id, name, description, hasPicture. |
POST /locations | Fotoğrafından konum oluştur: name, description ve upload (POST /uploads tutamacı) veya fromJob (tamamlanmış görüntü işi). |
Harcama Sınırları
Jetonun bir harcama sınırı varsa, bulut nesli dağıtmadan önce fiyatlandırılır ve
kalan ödenekle aşarsa reddedilir
(402 exceeds_spend_cap). Maliyet belirlenemezse (bulut durumu
kullanılabilir), sınırlı jeton kapalı 503 cost_unknown ile başarısız olur. Yerel
nesli her zaman kredi maliyetinden muaftır.
Tam Bir Akış
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}'Hata Kodları
| HTTP | errorCode | Ne zaman |
|---|---|---|
| 400 | invalid_json | Gövde geçerli JSON değildir. |
| 400 | invalid_options | Gerekli alan eksik veya hatalı biçimlendirilmiş. |
| 400 | invalid_preset | Ön ayar/paket/mediaType uyumsuzluğu. |
| 400 | needs_* | Gerekli giriş (ipucu, görüntü, referans) eksik. |
| 400 | invalid_handle | Giriş geçerli yükleme tutamacı değildi. |
| 400 | unsupported_backend | Ön ayar dış API üzerinde çalışır. |
| 400 | preset_not_installed | Yerel backend seçildi ama modeller yüklü değil. |
| 400 | cloud_not_connected | Bulut backend seçildi ama hesap bağlı değil. |
| 400 | invalid_plan | Film planının sorunları vardır, details.problems tümünü listeler. |
| 400 | no_tempo | Film temposu olmadan barlar zamanı. Tempoyu önce algıla. |
| 400 | no_audio | Ses parçası olmayan filmden tempo istendi. |
| 400 | no_pulse | Parçada sabit bir ritim işitilemedi. |
| 401 | unauthorized | Eksik veya geçersiz jeton. |
| 402 | exceeds_spend_cap | Bulut maliyeti jetonun harcama limitini aşıyor. |
| 402 | exceeds_balance | Bulut bakiyesi işlemeleri karşılamıyor. |
| 403 | forbidden_host | Geri döngü olmayan Host başlığı. |
| 403 | studio_not_installed | Video Studio bu bilgisayarda yüklü değil. |
| 404 | not_found / invalid_preset / job_not_found | Bilinmeyen rota, ön ayar veya işi. |
| 404 | unknown_preset | GET /prompt-guide/:presetId ön ayar olmayan kimlikle. |
| 404 | film_not_found | O kimlikle film yok. |
| 404 | clip_not_found | Bu kimlik, ad veya numarayla klip yok. |
| 404 | track_not_found | Bu ad veya kimlikle parça yok. |
| 404 | cast_not_found | Kütüphanede bu ad veya kimlikle karakter yok. |
| 404 | location_not_found | Bu ad veya kimlikle konum yok veya henüz fotoğrafı yok. |
| 409 | clips_not_ready | Klipler henüz bir işlemeye ihtiyaç duyarken ihracat istendi, details.clips adlarını verir. |
| 413 | asset_too_large | 100 MB üzerinde yükle. |
| 503 | guides_unavailable | İpucu rehberleri yüklenemedi ve hiçbiri önbelleğe alınmadı. |
| 503 | cost_unknown | Sınırlı jeton; bulut maliyeti belirlenemedi. |
| 503 | studio_busy | SimpliGen penceresi ulaşılamadı veya zamanında yanıt vermedi. Zaman aşımı olduysa, değişiklik yine de yapılmış olabilir: yeniden denemeden önce filmi okuyun. |
| 500 | internal_error | Beklenmedik sunucu hatası. |