SimpliGen Docs
AI Agents

Kontrol API'si başvurusu

SimpliGen'in makinenizde açığa çıkardığı yerel HTTP API'si, özel entegrasyonlar oluşturmak ve kuşaklamalar başsız çalıştırmak için.

SimpliGen, uygulama açıkken makinenizde küçük bir HTTP Kontrol API'si çalıştırır. Bu, MCP sunucusu'nun konuştuğu aynı API'dir ve doğrudan açığa çıkarılmıştır, böylece SimpliGen'i kendi komut dosyalarınızdan, hizmetlerinizden veya ajanlarınızdan yönetebilirsiniz; uygulama tepsiye küçültülü olsa da.

MCP'ye karşı Kontrol API'si

Sadece bir yapay zeka ajanı (Claude, Codex, vb.) SimpliGen'i kullanmasını istiyorsanız, bunun yerine MCP sunucusunu kurun; bu API'yi sarmalamaktadır. Herhangi bir dilde özel bir entegrasyon yazıyorsanız Kontrol API'sini doğrudan kullanın.

Temel URL ve bulma

Sunucu sadece geri döngüyü bağlayan ve varsayılan olarak şu adrese bağlanır:

http://127.0.0.1:48199

Bu bağlantı noktası meşgulse, SimpliGen bir işletim sistemi tarafından atanan bağlantı noktasına döner. Mevcut bağlantı noktası (ve API sürümü) her zaman uygulamanın kullanıcı veri dizinindeki bir bulma 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
agent-api.json
{ "port": 48199, "version": 1 }

48199 kodlaması yerine canlı bağlantı noktasını bulmak için bu dosyayı okuyun.

Gereksinimler

Kontrol API'si sadece uygulama açıkken ve makine ajan erişimine hak kazanmışken çalışır (lisansınızın bir parçasıdır). İstekler yalnızca Host başlığı bir geri döngü takma adı olduğunda sunulur; başka her şey 403 forbidden_host alır (bir DNS yeniden bağlama koruması).

Kimlik doğrulama

GET /health dışındaki her uç nokta Authorization başlığında bir eşleştirme belirteci gerektirir:

Authorization: Bearer sg-agent-xxxxxxxx...

Uygulamada Ayarlar → Ajan bağla altında bir belirteç oluşturun (bkz. Ajan bağla). Ham belirteç bir kez gösterilir; sadece bir hash depolanır. Her belirteç, bulut kuşaklamalar için isteğe bağlı bir harcama sınırı taşıyabilir. Uygulamada bir belirteci iptal etmek hemen geçerli olur.

Eksik veya geçersiz bir belirteç 401 unauthorized döndürür.

Kuralları

  • İstekler: JSON gövdeleri (Content-Type: application/json), 50 MB'a kadar.
  • Yanıtlar: her zaman JSON.
  • Hatalar: 2xx olmayan yanıtlar { "errorCode": "...", "message": "..." } şekline sahiptir.
  • Kimlikler: ön ayarlar presetId (+ isteğe bağlı packId) ile ele alınır; işler jobId ile.

Minimal bir 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

Kullanabileceğiniz her ön ayarı, girdileri, seçenekleri, yerel hazırlığı ve bulut uygunluğu/maliyeti ile (preset, mediaType) başına bir giriş olarak listeler.

{
  "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
    }
  ]
}
AlanAnlam
localReadyTüm model dosyaları yüklenmiştir; ön ayar şimdi yerel olarak çalışabilir.
cloudEligibleÖn ayar SimpliGen Bulutunda çalışabilir.
cloudCostBir bulut çalışması için yaklaşık kredi maliyeti (uygun değilse null).
apiProviderDış API ön ayarları (ör. OpenAI, Google) için null olmayan, Kontrol API'si dispatch edilemez.
inputs / optionsÖn ayarın neyi kabul ettiği ve POST /generate iletebileceğiniz seçenek aralıkları/en boy oranları. steps/cfg sadece gelişmiş denetimleri açığa çıkaran ön ayarlar için null değildir.
inputs.requiresPromptTalimatları yerleşik olarak bulunan ön ayarlar için (kırpma, baş veya kıyafet takaları, yükseliş) false: boş bir prompt geçerlidir ve gönderdiğ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 mekanizma çalışmadığında başlatır. Gövde almaz.

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

Soğuk başlatma, isteğin beklediğinden daha uzun sürer. Bu durumda yanıt 202 ve engineStarting: true ile gelir ve mekanizma açılmaya devam eder, bu yüzden GET /status engineRunning doğru olana kadar yokla.

Zaten çalışan bir motoru başlatmak 200 ve alreadyRunning: true döndürür ve hiçbir şeyi değiştirmez. Motor yüklü değilse yanıt 409 engine_not_installed olur: birini yüklemek çok gigabaytlık bir indirmedir ve uygulama için bir iş olmaya devam eder, API için değil. Motorun çalışmasını reddettiği bir makine 409 engine_unsupported_hardware yanıtı verir, yeniden denemek bunu düzeltmez.

POST /engine/stop

Yerel motoru durdurun ve VRAM'ını serbest bırakın. Bulut kuşaklaması etkilenmez. Zaten kapalı olan bir motoru durdurmak başarılı olur.

POST /engine/restart

Durdurun ve yeniden başlatın; takılmış bir motor için veya özel bir düğüm yüklendikten veya kaldırıldıktan sonra. 202 başlat davranışı ile başarısız olur.

Projeler

Projeler kuşaklamaları tutan kaplardır.

GET /projects

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

POST /projects

Request
{ "name": "Campaign assets" }

201 ile { "project": { ... } } döndürür. name gereklidir (aksi takdirde 400 invalid_options).

Yüklemeler

Girdiler (kaynak görüntüler, referans görüntüler, kaynak videolar) hiçbir zaman yerel yollar olarak iletilmez. Önce baytları yükleyin ve döndürülen tutamağı POST /generate iletme.

POST /uploads

Request
{ "filename": "ref.png", "dataBase64": "<base64 of the file bytes>" }
Response (201)
{ "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.

Üretim

POST /generate

Bir kuşaklama enqueues ve hemen bir jobId döndürür. Sonuç için GET /jobs/:id (bkz. İşler) yokla.

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" }
}
AlanGerekliNotlar
presetIdevetGET /capabilities adresinden.
mediaTypeevet"image" veya "video".
packIdhayırVerilirse, ön ayarın paketi eşleşmelidir.
promptkoşulluÖn ayar inputs.requiresPrompt: false raporunda olmadıkça gerekli. Bu ön ayarlar yerleşik talimatlarına sahiptir: bunları olduğu gibi çalıştırmak için "" gönderin veya ekstra notlar iletmek için metin ekleyin.
backendhayır"auto" (varsayılan), "local", veya "cloud". Otomatik yerel tercih eder kuruluysa, yoksa bağlıysa bulut.
imagekoşulluYükleme tutamağı. Görüntü-X ön ayarları için gerekli (inputs.requiresImage).
videokoşulluYükleme tutamağı, video girişli ön ayarlar için.
referenceImageskoşulluTutamakların veya { handle, label } dizisi, referans-görüntü ön ayarları için.
audiokoşulluYükleme tutamağı, ses tarafından yönlendirilen ön ayarlar için (dudak-senkronizasyon, ses-video). Ön ayar acceptsAudio raporunda olmak için gerekli, aksi takdirde iş needs_audio ile reddedilir.
audioStartSecondshayırYolun nerede başlayacağı, saniye cinsinden. options altında da kabul edilir.
referenceVideoskoşulluTutamakların veya { handle, soundtrackMode, durationSeconds } dizisi, referans-klip ön ayarları için.
referenceAudioskoşulluTutamakların veya { handle, durationSeconds } dizisi, referans-ses ön ayarları için.
lorashayırinputs.supportsLoras doğru olan ön ayarlar için uygulanacak { name, weight } dizisi. name GET /loras adresindeki bir LoRA'nın görüntü adı (veya dosya adı) ile eşleşir; weight varsayılan olarak LoRA'nın varsayılan gücüne gider. Bilinmeyen adlar 400 unknown_lora döndürür. Şimdilik sadece yerel arka uç.
projecthayırProje id veya slug. Etkin projeyi varsayılan olarak belirler.
options.aspectRatiohayırÖn ayarın desteklenen oranlarından biri olmalıdır.
options.steps / options.cfghayırÖn ayarın reklamı yapılan aralıkları içinde.
options.negativePrompthayırNegatif istem (UI'nın Gelişmiş Seçenekleri negatif). Ayrıca negativePrompt olarak üst düzey olarak kabul edilir.
options.durationSecondshayırVideo süresi.
options.resolutionhayırÇözünürlük katmanı etiketi.
Response (201)
{ "jobId": "gen_abc123", "backend": "local", "status": "queued" }

Bulut işi için yanıt ayrıca "cloudCost": <credits> içerir.

Arka uçlar

Dış API ön ayarları (apiProvider null olmayan, ör. GPT Image 2, Veo) burada dispatch edilemez, 400 unsupported_backend alacaksınız. Yerel veya SimpliGen Bulut ön ayarını kullanın. Bulut bağlı bir hesap gerektirir (400 cloud_not_connected); yerel modeller yüklenmesi gerektirir (400 preset_not_installed, önce hazırlayın).

GET /loras

Ajanların POST /generate'in loras dizisine ne ileteceklerini keşfedebilmeleri için kullanıcının yüklü LoRA'larını listeler. name (görüntü adı) ile eşleştirin.

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 }
  ]
}

LoRA'yı ön ayarın temel modelinin (baseModel) uyduğu yere iletin ve kendi tetikleyici kelimelerini isteminize kullanın, böylece etkinleşsin.

İş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 adresinden biridir. Başarıda, resultPath kodlanan yerel dosya yolu; 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

Enqueued/running işi iptal eder. { "jobId", "status", "note?" } döndürür. Zaten uçuşta olan bulut işi sunucuda tamamlanmaya devam edebilir (note'de belirtilmiştir).

Ön ayarları hazırlama

Yerel ön ayarlar ilk kullanımda model dosyalarını indirirler. Bunları önceden hazırlayabilirsiniz.

POST /presets/prepare

Request
{ "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": [ ... ] }. Bunu veya GET /capabilities (saat localReady) yokla, ön ayar hazır olana kadar.

Karakterler

Karakter Stüdyosu da komut dosyası oluşturulabilir. Karakterler yerel-yalnızca (bulut reddedilir). Kavramlar için Karakterler bakın.

Uç noktaAmaç
GET /charactersKarakterleri listele.
GET /characters/:idBir karakter al.
GET /character-presetsYüklü karakter ön ayarları (temel / düzenle / i2v).
GET /character-featuresMevcut kimlik/görünüş özelliği seçenekleri.
POST /charactersKarakter oluştur (mode: "generate" açıklamadan veya "upload" yüklü temel görüntü tutamağından).
POST /characters/:id/generate-imageKarakterin bir görüntüsünü oluştur ({ prompt, aspect?, count?, presetId? }).
POST /characters/:id/generate-frameTek bir video başlangıç karesini oluştur.
POST /characters/:id/animateKarakteri videoya canlandır.
POST /characters/:id/presetKarakterin varsayılan ön ayarını ayarla.
POST /characters/:id/enhanceBir karakter varlığını yükselt/geliştir.

Tüm kuşaklama uç noktaları GET /jobs/:id aracılığıyla yokladığınız bir jobId döndürür, tamamen POST /generate gibi.

Tarifler

Paketler ve ön ayarlardan çok adımlı tarifler (akışlar) yazın. Yapı taşlarını keşfedin, üst düzey spesifikasyondan oluşturun, ardından isteğe bağlı olarak yayınlayın.

Uç noktaAmaç
GET /recipe-blocksGiriş noktaları + bir adım olarak kullanılabilir her ön ayar, bağlantı noktası sözleşmesi ile.
POST /recipes/validateKuru çalıştırma spec (oluştur+doğrula) veya config, kayıt yok. validation döndürür.
POST /recipesspec adresinden oluştur ve taslak kaydet. { recipeId, valid, errors, config } döndürür.
GET /recipesBu cihazda (Mağazadan yüklenen veya burada yazılan) her tarifi, inputs (anahtar, tür, etiket, gerekli, seçenekler) ve adım sayısı ile listele.
GET /recipes/:idBir tarifi, tam config'ini, inputs'ını ve readiness adresini al (adım başına: hangi ön ayarı çalıştırır ve yerel olarak yüklü olup olmadığı).
POST /recipes/:id/runBir tarifi çalıştır. Gövde: { inputs: { key: value }, engine?: "local" | "cloud" | "auto" }. Konu girdileri bir karakter veya ürün kimliği alır, görüntü/video/ses girdileri yükleme tutamaklarını alır, her şey ise düz değerleri alır. { runId, status: "running", engine, steps, cloudCost? } döndürür. Bulut çalışmaları ön cepheden fiyatlandırılır ve belirtecin harcama sınırına karşı sayılır.
GET /recipes/:id/runsBir tarifin son çalışmaları, en yeni önce.
GET /recipe-runs/:idBir çalışmanın durumu: status (çalışıyor, tamamlandı, başarısız, iptal edildi), steps (her biri durum, iş kimliği ve sonuç yolu ile) ve son medya adımı tamamlandıktan sonra resultPath.
POST /recipe-runs/:id/cancelÇalışmayı durdur. Başka adımlar başlamaz; yerel uçuşta bir adım kesilir.
POST /recipes/:id/publishYaratıcı Pazarlamaya gönder (bağlı bir hesap gerektirir).

Ürünler ve konular

Bir tarifin subject girdisi bir karakter veya bir ürün alır. Ürünler diğer konu türüdür: bir tarif alabilen bir ürün stüdyosu ve UGC tariflerinde kullanılan temel fotoğraflı adlandırılmış bir şey.

Uç noktaAmaç
GET /subjectsBir tarifin alabileceği her konu: karakterler ve ürünler (id, type, name, status).
GET /productsÜrünleri listele.
GET /products/:idBir ürün al.
POST /productsYüklü bir fotoğraftan bir ürün oluştur: { name, image: <upload handle>, description?, category? }. Açıklama ve kategori tarif istemlerine dokunur. { productId, product } döndürür.
DELETE /products/:idBir ürünü ve fotoğrafını kaldır.

spec, üst düzey bir açıklamadır; uygulama otomatik olarak bağlantı noktalarını, adım-adım medya zincirini ve adım başına bir istemi yapılandırır, ardından doğrular.

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" } }
}

Oluşturma ve kaydetme yaratıcı bir hesap gerektirmez. POST /recipes/:id/publish bağlı bir hesap gerektirir ve kullanıcı uygulamada bir tanesini bağlayana kadar not_connected döndürür (needsConnect: true ile); aynı taslak sonra değişmez yayınlanır. Tarifin kullandığı her ön ayar dağıtılabilir birinci taraf pakete ait olmalıdır.

Harcama sınırları

Bir belirtecin harcama sınırı olduğunda, bulut kuşaklamaları gönderimden önce fiyatlandırılır ve kalan avansı aşarlarsa reddedilir (402 exceeds_spend_cap). Maliyet belirlenemezse (bulut durumu kullanılamıyorsa), sınırlı bir belirteç 503 cost_unknown ile kapalı başarısız olur. Yerel kuşaklamalar her zaman kredi maliyetinden muaftır.

Tam 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ı

HTTPerrorCodeNe zaman
400invalid_jsonGövde geçerli JSON değil.
400invalid_optionsGerekli bir alan eksik veya yanlış biçimlendirilmiş.
400invalid_presetÖn ayar/paket/mediaType uyuşmazlığı.
400needs_*Gerekli bir giriş (istem, görüntü, referanslar) eksik.
400invalid_handleBir giriş geçerli bir yükleme tutamağı değildi.
400unsupported_backendÖn ayar harici bir API'de çalışır.
400preset_not_installedYerel arka uç seçildi ancak modeller yüklü değil.
400cloud_not_connectedBulut arka ucu seçildi ancak hesap bağlı değil.
401unauthorizedEksik veya geçersiz belirteç.
402exceeds_spend_capBulut maliyeti belirtecin harcama sınırını aşıyor.
403forbidden_hostLoopback olmayan Host başlığı.
404not_found / invalid_preset / job_not_foundBilinmeyen rota, ön ayar veya iş.
413asset_too_large100 MB'ı aşan yükleme.
503cost_unknownSınırlı belirteç; bulut maliyeti belirlenemedi.
500internal_errorBeklenmeyen sunucu hatası.