İçeriğe git
Uygulamanıza Sanal Sahneleme Nasıl Eklenir: Geliştiriciler İçin API Rehberi
Eğitimler

Uygulamanıza Sanal Sahneleme Nasıl Eklenir: Geliştiriciler İçin API Rehberi

Bir REST API aracılığıyla herhangi bir uygulamaya AI sanal sahneleme eklemeye yönelik adım adım geliştirici rehberi. Kod, Roomagen'in belgelenmiş API'sini izler: bir iş gönderin, imzalı webhook'ları doğrulayın, alternatif olarak yoklama yapın, sonuçları depolayın ve bildirimi yerleşik olarak sunun.

Roomagen
Roomagen Team
3 Ağustos 2026Güncellendi: 24 Ekim 202617 dk okuma3,802 kelime
İçindekiler(12)

Bu güncellemede neler değişti

  • API bölümü güncellendi: ücretsiz API görselleri artık bir paket satın alınana kadar Roomagen filigranı taşır ve her araç belgelenmiştir
  • Bir aracın yok saydığı seçenekleri belirten uyarılar listesi eklendi
Önceki güncellemeler(1)
    • Her kod örneği Roomagen'in canlı API'si ile eşleşecek şekilde düzeltildi: roomType gibi camelCase seçenekler, UUID iş kimlikleri, Idempotency-Key üstbilgisi ve zaman damgası ile ham gövde üzerinden hesaplanan v1= webhook imzası
    • Erişim ve fiyatlandırma güncellendi: bekleme listesi yerine 30 Ağustos 2026'dan itibaren self-servis anahtarlar, ilk anahtarda bir defaya mahsus 50 ücretsiz görsel, süresi asla dolmayan paketler ve 40+ yerine belgelenmiş altı araç
    • Bildirim bölümü; AB 723'ün beyan artı orijinale bağlantı kuralı, California'nın Ocak 2027'den itibaren kiralık ilanları için geçerli AB 2025 kuralı, birbiriyle çelişen MLS etiket kuralları ve EU AI Act Madde 50 çerçevesinde yeniden yazıldı
    • Bir hata kodu tablosu, hız sınırları, API'nin yapmadıklarına dair bir bölüm ve yayın öncesi kontrol listesi eklendi; desteklenmeyen pazar büyüklüğü rakamı ile ücretsiz yeniden üretim ve bildirim etiketi iddiaları kaldırıldı
    • İş zamanlaması belgelenen 20–60 saniyeye ve yoklama aralığı 2–5 saniyeye düzeltildi; sahneleme, gündüzden alacakaranlığa dönüştürme ve kat planından 3D'ye için ölçülen medyan API süreleri eklendi

Bir uygulamaya sanal sahneleme eklemek için arka ucunuz her bir oda fotoğrafını asenkron bir iş olarak sanal sahneleme API'sine gönderir, sonucu imzalı webhook veya yoklama aracılığıyla alır ve ardından bildirim verileriyle birlikte orijinalin yanında depolar.

Bu iş için araç

AI Sanal Sahneleme — Boş Odaları Bir Dakikadan Kısa Sürede Döşeyin

Boş odaları AI ile, genellikle bir dakikadan kısa sürede sahneleyin. 13 tasarım stili, 15 oda tipi; emlak, kiralık mülkler ve konaklama için ilana hazır fotoğraflar. 6 ücretsiz kredi, kredi kartı gerekmez.

Ücretsiz Dene

Bir uygulamaya sanal sahneleme eklemek temelde tek bir döngüye dayanır: arka ucunuz bir sanal sahneleme API'sine iş olarak bir oda fotoğrafı gönderir, sağlayıcı bunu arka planda işler ve uygulamanız sonucu alıp orijinalin yanında saklar ve hedef platformun gerektirdiği bildirimle birlikte gösterir. Bu eğitim, cURL, Node.js ve Python kodlarıyla Roomagen API'si üzerinde bu döngüyü kurar ve tasarımı diğer sağlayıcılara taşınabilir halde tutar.

Entegrasyona genel bakış

  1. Her fotoğrafı sunucunuzdan bir iş olarak gönderin: bir Idempotency-Key ile POST /v1/jobs.
  2. Başka bir şey yapmadan önce dönen job_id değerini saklayın.
  3. Tamamlanan işi imzalı bir webhook üzerinden alın ve kaçırılanları GET /v1/jobs/{id} ile mutabakat yaparak eşitleyin.
  4. Sonucu kendi sunucunuzda yeniden barındırın, orijinali yanında saklayın ve bildirim verilerini her dışa aktarıma taşıyın.

Neler İnşa Ediyorsunuz: Bir Sahneleme Özelliğinin Mimarisi

Bu eğitimin sonunda uygulamanız, Roomagen'in belgelerine göre bir oda fotoğrafı kabul edip genellikle 20 ila 60 saniye sonra aynı odanın döşenmiş bir versiyonunu gösterecektir. Buradaki diğer her şey, bu döngüyü üretim hacminde güvenilir kılmak için vardır. Aynı döngü; ilan portallarına, fotoğraf teslim platformlarına, boş birimleri pazarlayan mülk yönetimi yazılımlarına, müşterinin kendi odası üzerinde konsept sunan iç tasarım uygulamalarına ve seçilen bir tarzda döşenmiş odayı gösteren mobilya perakendecilerine hizmet eder.

Görsel işleme onlarca saniye sürer; bu da bir HTTP isteğini açık tutmak için çok uzun bir süredir, bu nedenle tasarım asenkrondur: işi gönderin, hemen bir iş kimliği alın, sonucu daha sonra toplayın. Sahneleme çok adımlı bir işlem hattı çalıştırır (sahne analizi, ardından prompt, ardından üretim), bu nedenle gündüzden alacakaranlığa dönüştürme gibi araçlardan daha yavaştır: Roomagen'in 1 Ekim 2026'ya kadarki 30 günlük üretim verilerinde, medyan API sahneleme işi yaklaşık 45 saniye sürerken, gündüzden alacakaranlığa dönüştürme ve kat planından 3D'ye dönüştürme için bu süre yaklaşık 25 saniyeydi.

Aşama Nerede çalışır Neyi doğru yapmalı
İşi gönderme Arka ucunuz → POST /v1/jobs Anahtar sunucu tarafında kalır; Idempotency-Key; job_id saklanır
Görsel işleme Roomagen Genellikle 20–60 saniye; sahneleme her zaman 2K çözünürlükte işlenir
Bittiğini öğrenme Webhook (push) ve yoklama (pull) İmzayı doğrulayın; job_id üzerinden tekilleştirin
Saklama ve gösterme Depolama alanınız ve kullanıcı arayüzünüz Sonucu yeniden barındırın; orijinali saklayın; bildirim yapın

Roomagen, web uygulamasında 40'tan fazla araç bulunan bir AI fotoğraf düzenleme ve sanal sahneleme platformudur; API, kabul ettiği her aracı (Ekim 2026 itibarıyla 65 adet) tek bir iş uç noktasının arkasında belgeler. Görüntü araçları Google'ın Gemini görüntü modelleri üzerinde çalışır ve API; sahneleme işlem hattını, iş yönetimini, başarısız işlemler için otomatik para iadelerini ve imzalı webhook'ları ekler.

Başlamadan Önce: Anahtarlar, Ortamlar ve Görüntü Gereksinimleri

Anahtar alma. Roomagen'in API'si 30 Ağustos 2026'daki herkese açık lansmanından bu yana self-servistir; bekleme listesi yoktur. Geliştirici portalında bir Roomagen hesabıyla oturum açın, e-postanızı doğrulayın ve API hızlı başlangıç kılavuzunda açıklandığı gibi bir anahtar oluşturun. İlk anahtarınız, hesap başına bir defaya mahsus olmak üzere 50 ücretsiz görsel ekler; bu da bu kılavuzdaki her şeyi inşa etmek ve test etmek için yeterlidir. Hesap bir paket satın alana kadar her işlem çıktısı bir Roomagen filigranı taşır, bu nedenle bunları yayınlamak için değil, derleme ve test için kullanın.

Anahtarlar, X-Api-Key başlığında gönderilen rmg_live_ ve ardından gelen 64 onaltılık (hexadecimal) karakterden oluşur ve portal her anahtarı yalnızca bir kez gösterir. Bunu sunucu tarafındaki güvenli bir kasada saklayın; herkesin ayıklayıp bakiyenizi harcayabileceği tarayıcı JavaScript'ine veya bir mobil uygulamaya kesinlikle dahil etmeyin.

Ortamlar. Bir hesap en fazla 10 etkin anahtar tutabilir, bu nedenle her ortam için bir tane oluşturun ve diğerine dokunmadan birini iptal edin. Test modu yoktur: her anahtar canlıdır ve bir hesabın anahtarları tek bir görsel bakiyesini, tek bir portal webhook'unu ve tek bir imzalama gizli anahtarını paylaşır; bu nedenle geliştirme işlerine iş başına özel webhook_url verin. Tasarım gereği bir döndürme (rotate) butonu yoktur: yeni anahtarı oluşturun, dağıtın (deploy edin), ardından eskisini iptal edin.

Görüntü girdileri.

Gereksinim Roomagen API
Formatlar ve boyut JPEG, PNG veya WebP, 20 MB'a kadar; image_url veya image_base64 parametrelerinden yalnızca biri
image_url (tercih edilen) POST isteğiniz işlenirken getirilen herkese açık https URL'si: 10 saniyelik zaman aşımı, en fazla 3 yönlendirme, özel sunucular reddedilir
image_base64 İsteğe bağlı data-URI öneki; istek gövdesi 30 MB'a ulaşabilir, ancak yalnızca X-Api-Key mevcut olduğunda (bu olmadan 1 MB)

image_url tercih edin: istekler küçük kalır, base64'ün getirdiği %33'lük ek yükten kurtulursunuz ve getirme işlemi POST isteğiniz sırasında gerçekleştiğinden, imzalı bir URL'nin yalnızca bu istek süresince geçerli olması yeterlidir. Tam boyutlu dışa aktarımı, kare başına bir oda olacak şekilde, düz açıyla çekilmiş ve makul düzeyde aydınlatılmış olarak gönderin; model yalnızca görebildiği ayrıntıları koruyabilir.

Bakiyeyi kod ile kontrol etme. GET /v1/account, bakiyenizin halen işleyebileceği görseller olan image_credits değerini döndürür. Düşük bakiye uyarısını hemen buna bağlayın: bakiye bir işi karşılayamadığında POST /v1/jobs, 402 insufficient_credits yanıtını verir ve hiçbir iş oluşturulmaz.

1. Adım: Bir Sahneleme İşi Gönderin

Tek bir POST işi oluşturur: araç, görsel, seçenekler ve isteğe bağlı olarak iş başına bir webhook_url (bu olmadan Roomagen, portalda kayıtlı hesap webhook'unu kullanır veya yoklama yaparsınız).

curl -X POST https://api.roomagen.com/api/v1/jobs \
  -H "X-Api-Key: $ROOMAGEN_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: photo-4821-3-stage" \
  -d '{
    "tool": "virtual-staging",
    "image_url": "https://cdn.example.com/rooms/4821-3.jpg",
    "options": { "style": "scandinavian", "roomType": "living-room", "mode": "empty-room" },
    "webhook_url": "https://app.example.com/hooks/roomagen"
  }'

Yanıt, görsel işleme tamamlanmadan önce 201 durumuyla gelir:

{ "job_id": "3f1c9d4e-5b2a-4c8e-9f10-7d6a2b3c4e5f", "status": "processing", "images_charged": 1 }

Node.js 18+ arka ucundan aynı çağrı:

async function submitStagingJob(photo) {
  const res = await fetch("https://api.roomagen.com/api/v1/jobs", {
    method: "POST",
    headers: {
      "X-Api-Key": process.env.ROOMAGEN_API_KEY,
      "Content-Type": "application/json",
      "Idempotency-Key": `photo-${photo.id}-stage`, // derived from your record, never random
    },
    body: JSON.stringify({
      tool: "virtual-staging",
      image_url: photo.signedUrl,
      options: { style: photo.style, roomType: photo.roomType, mode: "empty-room" },
      webhook_url: "https://app.example.com/hooks/roomagen",
    }),
  });
  const body = await res.json();
  if (!res.ok) throw new Error(`${body.error.code}: ${body.error.message}`);
  await db.query(
    "INSERT INTO staging_jobs (photo_id, job_id, status, images_charged) VALUES ($1, $2, 'processing', $3)",
    [photo.id, body.job_id, body.images_charged],
  );
  return body.job_id;
}

Sahneleme diğer araçlara göre daha katıdır. style zorunludur, seçenekler camelCase biçimindedir ve aşağıdaki listenin dışındaki herhangi bir anahtar (room_type, resolution, tier ve customPrompt dahil) invalid_request ile reddedilir. Sahneleme her zaman 2K olarak işlenir ve bir görsel tutarındadır.

Seçenek Değerler Varsayılan
style (zorunlu) modern, scandinavian, industrial, traditional, minimalist, bohemian, mid-century-modern, coastal, farmhouse, luxury, japandi, art-deco, mediterranean veya modelin seçmesine izin vermek için custom yok
roomType living-room, bedroom, kitchen, home-office, kids-room ve terrace gibi 15 tür fotoğraftan çıkarılır
mode empty-room boş bir odayı döşer; restyle döşenmiş bir odayı yeniden dekore eder; recreate odayı farklı bir oda türü olarak yeniden oluşturur empty-room
furnitureMode, furniture ai veya "sectional sofa, floor lamp, rug" gibi bir listeyle manual ai
changeWalls, changeFloor true, modelin duvarları yeniden boyamasına veya zemin kaplamasını değiştirmesine izin verir false

Bu üç mod, Roomagen'in web uygulamasındaki sahneleme modlarına karşılık gelir; böylece ürün ekibiniz kod yazmadan önce bunları deneyebilir: boş odalar için AI sanal sahneleme, restyle için döşeli odaları yeniden tasarlayın ve recreate için Oda Amacını Değiştirme.

Her şeyden önce kalıcı olarak kaydedin. Kendi kaydınızın karşısına job_id ve images_charged değerlerini kaydedin. Idempotency-Key başlığı (128 karaktere kadar, API anahtarınıza özel kapsamlı), yeniden denemeleri güvenli hale getirir: aynı gövdeye sahip aynı anahtar, ikinci bir ücretlendirme olmadan orijinal işi döndürür. Çökme sonrasında yeniden oluşturabilmek için anahtarları kayıtlarınızdan türetin ve tamamen aynı gövdeyi yeniden gönderin: yeniden imzalanmış bir image_url de dahil olmak üzere farklı bir gövdeye sahip aynı anahtar 409 idempotency_conflict döndürür.

2. Adım: Tamamlanmayı Yönetme — Webhook'lar ve Yoklama (Polling)

Bir işin bittiğini öğrenmenin iki yolu vardır ve üretim entegrasyonları her ikisini de kullanır.

Boyut Webhook'lar (push) Yoklama (pull)
Gecikme süresi İş bittikten sonra sizden istek gelmeden gönderilir En fazla bir aralık kadar; Roomagen 2–5 saniye önerir
Altyapı 10 saniye içinde 2xx yanıtı veren herkese açık https uç noktası Bir arka plan işçisi (worker) veya zamanlayıcı
Güvenilirlik En az bir kez (at-least-once); yaklaşık 36 dakika içinde 5 deneme, ardından iptal edilir Döngüyü siz kontrol edersiniz
En uygun kullanım Yüksek hacimli üretim ortamı Geliştirme, etkileşimli beklemeler, mutabakat

Öncelikle webhook'ları, güvenlik ağı olarak da yoklamayı kullanın. Roomagen'in belgeleri webhook'ları "kayıt sistemi değil, bir optimizasyon" olarak adlandırır; çünkü yeniden deneme penceresi sona erdiğinde teslimat terk edilir. Yalnızca yoklama yapmak da tek başına ölçeklenemez: 3 saniyelik bir aralıkta her bir iş dakikada 20 isteğe mal olur, bu nedenle GET /v1/jobs/{id} üzerindeki dakikada 300 istek sınırı, aynı anda yoklama yapan yaklaşık 15 işi karşılar.

Uç noktayı kurun. Yönlendirmeler izlenmediğinden nihai URL'yi kullanarak portalın Webhook kartına bir https uç noktası kaydedin. whsec_ imzalama gizli anahtarını bir şifre gibi saklayın ve doğrulama mantığını doğru kurarken Send test event (Test etkinliği gönder) ile bir job.test teslimatı tetikleyin. İş başına özel bir webhook_url de aynı gizli anahtarı kullanır.

const crypto = require("crypto");
const express = require("express");
const app = express();

// Raw body on this route, mounted before any global express.json()
app.post("/hooks/roomagen", express.raw({ type: "application/json" }), async (req, res) => {
  const ts = req.get("X-Roomagen-Timestamp");
  const sig = req.get("X-Roomagen-Signature");
  if (!ts || !sig) return res.sendStatus(401);

  const expected = "v1=" + crypto
    .createHmac("sha256", process.env.ROOMAGEN_WEBHOOK_SECRET) // whsec_...
    .update(`${ts}.`)
    .update(req.body) // the raw bytes, never re-serialized JSON
    .digest("hex");
  const fresh = Math.abs(Date.now() / 1000 - Number(ts)) < 300;
  if (sig.length !== expected.length || !fresh ||
      !crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected))) {
    return res.sendStatus(401);
  }

  const job = JSON.parse(req.body);
  if (job.event === "job.test") return res.sendStatus(200);

  // Idempotent: only the first delivery (or poll) moves the row out of "processing"
  const { rowCount } = await db.query(
    "UPDATE staging_jobs SET status = $1, result_urls = $2, error = $3 WHERE job_id = $4 AND status = 'processing'",
    [job.status, job.result_urls, job.error, job.job_id],
  );
  if (rowCount === 1 && job.status === "completed") {
    await queue.add("store-results", { jobId: job.job_id }); // download off the request path
  }
  res.sendStatus(200);
});

Dört ayrıntı önemlidir:

  1. Ham baytlar üzerinden doğrulayın. Başlık, v1= ile {X-Roomagen-Timestamp}.{raw body}nin hex HMAC-SHA256 çıktısıdır; yeniden serileştirilmiş JSON eşleşmeyecektir.
  2. Sabit zamanda karşılaştırın, ardından tazeliği kontrol edin. Node'un timingSafeEqual fonksiyonu eşit olmayan uzunluklarda hata fırlatır, bu nedenle önce uzunlukları karşılaştırın. Yaklaşık beş dakikadan eski zaman damgalarını reddetmek, yeniden oynatma (replay) saldırılarını engeller; bu, Stripe'ın webhook belgelerinde açıklanan savunmanın aynısıdır; sunucu saatlerini senkronize tutun.
  3. Hızlı yanıt verin. Roomagen, 2xx yanıtı için 10 saniye bekler; zaman aşımı da dahil olmak üzere bunun dışındaki her şey başarısız bir denemedir ve tekrar denenir.
  4. Idempotent olun. Teslimat en az bir kezdir ve sırasızdır; ayrıca yoklama mekanizmanız işi zaten tamamlamış olabilir, bu nedenle job_id üzerinden tekilleştirme yapın.

Yoklama için, geliştirme sırasında veya bir mutabakat aracı olarak Python sürümü oldukça kısadır:

import os, time, requests

API = "https://api.roomagen.com/api/v1"
HEADERS = {"X-Api-Key": os.environ["ROOMAGEN_API_KEY"]}

def wait_for_job(job_id, interval=3, max_wait=300):
    deadline = time.time() + max_wait
    while time.time() < deadline:
        r = requests.get(f"{API}/jobs/{job_id}", headers=HEADERS, timeout=30)
        r.raise_for_status()
        job = r.json()
        if job["status"] != "processing":
            return job  # "completed" or "failed"; both are final
        time.sleep(interval)
    return None  # still processing: leave it to the reconciler

Bir iş, result_urls ile birlikte completed olarak veya error içinde bir neden ve otomatik para iadesiyle birlikte failed olarak sonlanır; gecikmeyi izlemek için processing_ms değerini günlüğe kaydedin (loglayın). Birkaç dakika sonra hâlâ processing durumunda olan işler için her bir veya iki dakikada bir mutabakat aracı çalıştırın. Yalnızca bir zamanlayıcı süresi doldu diye yavaş bir işi başarısız olarak işaretlemeyin: iş hâlâ tamamlanabilir ve oluşturulduğunda ücreti tahsil edilmiştir.

3. Adım: Sonuçları Kullanıcılarınıza Teslim Edin

Tamamlanan bir iş, işlenmiş JPEG görsellerinden oluşan bir dizi olan result_urls döndürür. Bunları doğrudan hotlink ile sunmayın.

Sonuçları yeniden barındırın. Roomagen, sonuçları hesabın saklama süresine tabi olarak kendi depolama alanından sunar; bu nedenle bir arka plan işi, iş tamamlanır tamamlanmaz her görseli indirmeli, kendi depolama alanınıza (S3, R2, GCS veya benzeri) yazmalı ve CDN'iniz üzerinden sunmalıdır. Böylece görselleriniz asla bir sağlayıcının saklama politikasına bağımlı kalmaz.

Orijinali çıktının yanında saklayın. Kaynak fotoğrafı ve sahnelenmiş görseli bağlantılı bir çift olarak saklayın. Bu ikili bir öncesi/sonrası kaydırıcısını besler, kullanıcıların geri almasına olanak tanır ve ilan bildirim kurallarının talep ettiği şeydir (4. Adım).

Değişkenliği hesaba katın. Üretken modellerin çıktıları değişiklik gösterir ve bazen koltuk yanlış çıkabilir. Yeniden çalıştırma, başka bir görsele mal olan yeni bir iştir; çünkü Roomagen bir kullanıcının beğenmediği sonuçları değil, yalnızca teknik olarak başarısız olan işlemleri iade eder. Her yeniden çalıştırmaya photo-4821-stage-2 gibi kendi Idempotency-Key değerini verin: ilk anahtarı yeniden kullanmak orijinal işi döndürür veya gövde değiştiyse bir 409 hatası verir. Bir "Tekrar dene" butonu sunun ve bu maliyetin kullanıcılara yansıtılıp yansıtılmayacağına veya fiyatlandırmanıza dahil edilip edilmeyeceğine karar verin.

Bekleme ve hata durumlarını tasarlayın. Sahneleme genellikle bir dakika içinde tamamlanır; bu, arayüz açısından uzun bir süredir. Lansmandan önce ilerleme durumunu, hata durumunu ("görsel işleme başarısız oldu ve ücret iade edildi") ve yeniden deneme eylemini tasarlayın.

4. Adım: Bildirimi Veri Modelinize Dahil Edin

Kullanıcılarınız sahnelenmiş fotoğrafları emlak ilanlarına koyuyorsa, bildirim yapmak onların yasal görevidir ve veri modeliniz bunun kolay olup olmayacağını belirler. Roomagen'in API'si herhangi bir bildirim etiketi veya orijinal-düzenlenmiş eşleştirmesi eklemez ve Roomagen'in şartları bildirimi kullanıcının sorumluluğuna bırakır; bu nedenle entegrasyonunuzun bunu taşıması gerekir.

  • 1 Ocak 2026'dan beri yürürlükte olan California AB 723. Bir taşınmaz satışına yönelik bir ilanda dijital olarak değiştirilmiş bir görsel kullanan bir broker veya satış temsilcisi ya da onlar adına hareket eden biri, görselin üzerinde veya hemen yanında değiştirildiğini belirtmeli ve orijinal, değiştirilmemiş görseli gösteren herkese açık bir siteye yönlendiren bir bağlantı, URL veya QR kod eklemelidir. California'nın gayrimenkul düzenleyicisi, bir AI aracı yanıltıcı reklam ürettiğinde sorumluluğun "teknoloji sağlayıcısına değil, lisans sahibine ve onun sorumlu broker'ına" ait olduğunu ekler.
  • 1 Ocak 2027'den itibaren California kiralama ilanları. AB 2025, benzer bildirimi kiralama reklamlarını da kapsayacak şekilde genişleterek yalnızca lisans sahiplerini değil, konut sağlayıcılarını ve diğerlerini de kapsar hale getirir.
  • MLS kuralları etiket yerleşimi konusunda farklılık gösterir. Canopy MLS, etiketin yalnızca altyazılarda değil doğrudan görselin üzerinde olmasını zorunlu kılarken, NWMLS üzerine bindirilmiş grafik veya metin içeren fotoğrafları kabul etmez.
  • AB pazarına yönelik ürünler. 2 Ağustos 2026'dan bu yana, AB AI Yasası'nın 50. Maddesi, "deep fake" görseller (mevcut yerlere veya nesnelere benzeyen ve yanıltıcı bir şekilde gerçekmiş gibi görünebilecek içerikler) üreten veya bunları değiştiren AI sistemlerinin uygulayıcılarının bunu bildirmesini gerektirmektedir; gerçek bir taşınmazın AI ile düzenlenmiş fotoğrafları bu tanımı makul bir şekilde karşılayabilir (ayrıntılar için AB AI Yasası Madde 50 rehberimize bakın).

Bu nedenle bildirimi pikseller olarak değil, veri olarak saklayın: orijinal fotoğraf için herkese açık bir URL, kullanılan araç ve seçenekleri içeren bir altered bayrağı ile her hedef platform için bir bildirim metni ve etiket yerleşimi. Etiketi saklarken değil, dışa aktarırken görselin üzerine ekleyin.

Araç AB 723'ün dijital olarak değiştirilmiş görsel tanımının uygulanışı
virtual-staging Belirtilen bir unsur olan mobilyaları ekler: bildirim yapın ve orijinali bağlantı olarak verin
item-removal Görseldeki unsurları kaldırır: bildirim yapın
virtual-renovation Tümü belirtilen unsurlar olan sabit tesisat, zemin, duvar veya boya rengini değiştirir: bildirim yapın
day-to-dusk Aydınlatma istisnası yalnızca taşınmazın temsil edilme şeklini değiştirmeyen düzenlemeleri kapsar ve yeni bir viewType, belirtilen bir unsur olan pencerelerden görünen manzarayı değiştirir: ihtiyatlı yol bildirim yapmaktır
image-enhancement Aydınlatma, beyaz dengesi, renk düzeltme ve pozlama, taşınmazın temsil edilme şeklini değiştirmedikleri sürece kapsam dışındadır
floor-plan-to-3d Kat planları belirtilen bir unsurdur; görselleştirmeyi bir fotoğraf olarak değil, bir illüstrasyon olarak sunun

Bu, inşa edenler için bir özettir, hukuki tavsiye değildir; AB 723 kılavuzumuz ve MLS fotoğraf gereksinimleri kılavuzumuz konuyu daha derinlemesine ele alır.

Üretim Konuları: Hız Sınırları, Yeniden Denemeler ve Kredi Bütçelemesi

Hız sınırları. Kayan bir 60 saniyelik pencerede anahtar başına: POST /v1/jobs için dakikada 60 istek, GET /v1/jobs/{id} için 300 istek ve GET /v1/tools ile GET /v1/account için 120 istek; ayrıca tek bir NAT adresi arkasındaki tüm sunucular tarafından paylaşılan, istemci IP'si başına dakikada 600 istek. Başarılı yanıtlar X-RateLimit-Limit ve X-RateLimit-Remaining başlıklarını taşır; bir 429 rate_limited yanıtı saniye cinsinden Retry-After başlığı taşır, bu nedenle kendi bekleme sürenizi uydurmak yerine buna uyun. Toplu işler için gönderimleri kuyruğa alın: dakikada 60 iş hızında, 500 fotoğrafın gönderilmesi sekiz dakikadan biraz fazla sürer.

Yeniden denemeler ve hata kodları. Her hata { "error": { "code", "message", "doc_url" } } yapısındadır. Asla message üzerinden değil, her zaman code üzerinden koşullandırma yapın:

Yanıt Kodunuzun yapması gereken
400 invalid_request, invalid_tool İsteği düzeltin (seçenek adları, değerler veya API slug'ı yerine bir web sitesi adının kullanılması); değiştirmeden tekrar denemeyin
400 invalid_image, image_fetch_failed Görseli doğrudan sunan herkese açık bir https URL'sinden tam olarak tek bir görsel kaynağı gönderin
401 invalid_api_key, key_revoked Bir yetkiliyi uyarın; tekrar denemeyin
402 insufficient_credits Hiçbir iş oluşturulmadı: bakiye yükleyin, ardından tekrar deneyin
409 idempotency_conflict Orijinal gövdeyi yeniden gönderin veya gerçekten yeni bir istek için yeni bir anahtar kullanın
413 payload_too_large image_url kullanımına geçin ve X-Api-Key başlığının gönderildiğini kontrol edin
429 rate_limited, 500 internal_error Bekleyin (429 için Retry-After), ardından aynı Idempotency-Key ile tekrar deneyin
İş status: "failed" Ücret otomatik olarak iade edilir; bir kez tekrar deneyin ve tekrar başarısız olursa fotoğrafı kontrol edin

Başarısızlık ekonomisi. Görsel üretimi sırasında başarısız olan bir işin ücreti otomatik olarak iade edilir, ancak iş üzerindeki images_charged değeri yeniden yazılmaz; bu nedenle bakiyeniz için tek doğru kaynak olarak GET /v1/account uç noktasını kabul edin. Sağlayıcıları karşılaştırırken fiyatın yanında hata politikalarını da kontrol edin.

Kredi bütçelemesi. Roomagen, API'yi geliştirici portalından önceden paketler halinde satın alınan görseller üzerinden faturalandırır:

Paket Görsel Fiyat Görsel başına
Ücretsiz hibe (ilk anahtar, bir kez) 50 0 $ —
Pilot 500 125 $ 0,25 $
Growth 2.500 550 $ 0,22 $
Scale 10.000 2.000 $ 0,20 $
Volume 50.000+ Anlaşmaya bağlı —

Paketlerin süresi asla dolmaz ve birbirine eklenir. Belgelenen her araç, 2K çözünürlükte işleme başına bir görsele mal olur; bunu kabul eden araçlarda resolution: "4K" bu maliyeti ikiye katlar ve sahneleme her zaman bir görseldir. Bütçe oluştururken yeniden çalıştırmaları da dahil edin: ayda 1.200 fotoğraf sahneleyen ve her on fotoğraftan birinin yeniden çalıştırılmasını bekleyen bir platformun yaklaşık 1.320 görsele ihtiyacı vardır, dolayısıyla bir Growth paketi neredeyse iki ay yeterli olur.

Yayınlanan fiyatlar büyük farklılıklar göstermektedir (Ekim 2026'da kontrol edilmiştir): ModelsLab iç mekan render'ı başına 0,02 $, Decor8 tüm API işlemleri için görsel başına 0,20 $ ve AI HomeDesign yıllık faturalandırmayla fotoğraf başına 0,24 $ veya aylık faturalandırmayla yaklaşık 0,49 $ listelemektedir. Birim fiyatın yanı sıra araç kapsamını, webhook'ları, hata politikasını ve çıktı kalitesini de karşılaştırın; sanal sahneleme API'si fiyatlandırma kılavuzumuz ve sahneleme API'leri karşılaştırmamız sağlayıcıları tek tek incelemektedir.

Olgunluk konusunda dürüst bir uyarı. Roomagen'in API'si yenidir: 1. sürüm 30 Ağustos 2026'da tek bir iş uç noktasıyla kullanıma sunuldu ve belgeleri kabul ettiği her aracı ancak 3 Ekim 2026'dan bu yana kapsamaktadır; bu nedenle güncel standartlara sahiptir ancak yıllara dayanan bir geçmişe sahip değildir. Kırıcı değişiklikler (breaking changes), kullanıma sunulmadan önce etkin anahtara sahip hesaplara e-posta ile duyurulur; geriye dönük uyumlu eklemeler ise herhangi bir zamanda gelebilir, bu nedenle tanımadığınız yanıt alanlarını yok sayın.

Entegrasyonu Genişletme: Diğer Belgelenmiş Araçlar

Döngü sahneleme için çalıştığında, bir "alacakaranlık versiyonu" veya "dağınıklığı kaldır" butonu yalnızca tool ve options alanlarını değiştirir:

Araç Slug Seçenekler
Sanal tadilat ve yenileme virtual-renovation style (10 değer), roomType (8 değer)
Fotoğraf geliştirme image-enhancement intensity: light, medium (varsayılan) veya heavy
Gündüzden alacakaranlığa fotoğraf düzenleme & dönüştürme day-to-dusk timeShift (0–23 saat, varsayılan 20), viewType, season, hasWindows
Fotoğraflardan AI nesne ve öğe kaldırma item-removal Yok: belirgin dağınıklığı temizlemek için seçenekleri atlayın veya öğeyi adlandıran bir customPrompt ile tier: "custom" gönderin
Kat planından 3D'ye floor-plan-to-3d outputStyle, interiorStyle, furnitureMode, fp3dOutdoor, fp3dLabels, inputType

Bu araçlar ayrıca resolution (2K veya 4K), tier (auto, guided veya custom) ve customPrompt (500 karaktere kadar) seçeneklerini de kabul eder. Sahnelemenin aksine, bilinmeyen anahtarları yok sayarak her birini yanıtın warnings listesinde belirtirler ancak aralık dışı değerleri yine de reddederler. Pencereleri olmayan odalar için gündüzden alacakaranlığa aracına hasWindows: false gönderin; böylece prompt pencere ve manzara talimatlarını devre dışı bırakır.

GET /v1/tools, anahtarınızın çağırabileceği her slug'ı görsel maliyetiyle birlikte döndürür ve döndürdüğü her slug belgelenmiştir. Bu listeyi sabit kodlamak (hardcode) yerine dinamik olarak okuyun ve roomagen.com'daki araç adlarının API slug'ları olmadığını unutmayın.

API'nin Yapmadığı Şeyler

  • Toplu iş uç noktası yoktur. Bir iş, tek bir araç üzerinden tek bir görsel anlamına gelir; web uygulamasının toplu işlem özelliği API'nin bir parçası değildir, bu nedenle işleri hız sınırları dahilinde kuyruğa alın.
  • Bildirim etiketleri yoktur. Çıktılar bildirim etiketi veya öncesi/sonrası eşleştirmesi taşımaz. İşlenen görseller, hesap bir paket satın alana kadar filigranlıdır ve bundan sonra herhangi bir Roomagen markalaması taşımaz.
  • Ücretsiz yeniden üretim yoktur. Yeniden çalıştırma yeni bir iştir ve o şekilde ücretlendirilir.
  • Ölçümler veya CAD dosyaları yoktur. Çıktılar boyutlar, vektörler veya DWG dosyaları değil, JPEG görselleridir. Fotoğraflardan oda ölçülerine ihtiyacınız varsa, üretken görsel API'si yanlış araçtır.
  • Garanti edilen çıktı yoktur. Üretken modeller yapay hatalar veya tutarsızlıklar üretebilir, bu nedenle bir ilana girmeden önce çıktıyı inceleyin.
  • Yalnızca uygulamaya özel özellikler sunulmaz. Düzenle, Kitaplık ve Tasarım Asistanı sohbeti Roomagen'in web uygulamasında yer alır.

Sahneleme API Entegrasyonlarında Yaygın Hatalar

  1. İstek iş parçacığını (thread) bloke etmek. Bir iş işlenirken kullanıcının isteğini açık tutmak, yük dengeleyici zaman aşımlarına yol açar. Kendi API'nizden 202 Accepted döndürün ve güncellemeleri istemciye push ile iletin.
  2. Yanlış seçenek adları. Bir sahneleme işinde room_type veya resolution göndermek invalid_request hatası döndürür; sahneleme kendi listesinden camelCase anahtarlar ve her zaman style ister.
  3. Yalnızca webhook'lara güvenmek. Yaklaşık 36 dakikalık yeniden denemelerden sonra Roomagen denemeyi bırakır. Bir mutabakat aracı olmadan bu iş sonsuza kadar "processing" durumunda kalır.
  4. İmzayı yanlış doğrulamak. Ayrıştırılmış JSON'ın karmasını almak, zaman damgası önekini atlamak, === ile karşılaştırmak veya tazelik kontrolünü atlamak doğrulamayı zayıflatır.
  5. Yönlendirme yapan bir webhook URL'si. Düz http ve özel ana bilgisayarlar en başta webhook_url_rejected ile reddedilir ve yönlendirmeler izlenmez; bu nedenle sonda taksim işareti veya www yönlendirmesi her teslimatı başarısız kılar.
  6. Rastgele idempotency anahtarları veya yeniden imzalanmış URL'ler. Saklamadığınız bir anahtar yeniden oynatılamaz, bu nedenle yeniden deneme tekrar ücretlendirilir; aynı anahtar altında yeniden imzalanmış bir image_url ise 409 hatası döndürür.
  7. Sonuç URL'lerine doğrudan hotlink vermek. Sonuçlar sağlayıcının saklama süresine tabidir. Tamamlandığında bunları kendi sunucunuzda yeniden barındırın.
  8. Her hedef için tek bir filigran kullanmak. Görselin üzerine işlenmiş bir "Virtually Staged" (Sanal Olarak Sahnelenmiştir) etiketi, MLS'in üzerine bindirilmiş metinlere karşı kurallarını çiğneyebilir ve orijinaline bir bağlantı olmadan tek başına AB 723'ü karşılamaz.

Lansman Öncesi Kontrol Listesi

  • API anahtarı, ortam başına bir tane olmak üzere yalnızca sunucularınızda barındırılır.
  • Sahneleme istekleri her zaman style gönderir ve sahneleme seçenekleri listesi dışındaki hiçbir şeyi içermez.
  • Her işin kayıtlarınızdan türetilmiş bir Idempotency-Key değeri vardır ve yeniden denemeler orijinal gövdeyi yeniden gönderir.
  • Webhook uç noktası nihai https URL'sidir, ham gövde üzerindeki v1= imzalarını doğrular, eski zaman damgalarını reddeder ve 10 saniye içinde yanıt verir.
  • Portaldan yapılan bir job.test teslimatı doğrulamadan geçer.
  • Bir mutabakat aracı, birkaç dakika sonra hâlâ işlenmekte olan işleri kontrol eder.
  • Sonuçlar, her biri orijinali yanında olacak şekilde yeniden barındırılır.
  • Bildirim verileri (orijinal URL'si, değiştirildi bayrağı, hedefe özel etiket) her dışa aktarma yoluna ulaşır.
  • Düşük bakiye uyarısı image_credits değerini okur ve her hata kodu kullanıcılarınız için anlaşılır bir mesajla eşleştirilir.

Özet: Döngüyü Yayına Alın, Ardından Genişletin

Bir uygulamaya sanal sahneleme eklemek küçük bir entegrasyondur: bir idempotency anahtarıyla yapılan bir POST, bir mutabakat aracıyla desteklenen doğrulanmış bir webhook işleyicisi ve orijinali sonucun yanında tutan bir depolama adımı. Sorunsuz ilerleyen senaryo (happy path) birkaç düzine satırdan ibarettir; işin çoğu üretim ortamı için sağlamlaştırma ve bildirim verilerinden oluşur. Bunların hiçbiri tek bir sağlayıcıya bağlı değildir: asenkron gönderim, push ve pull ile tamamlanma, yeniden barındırılan sonuçlar ve orijinal/çıktı ikilisi tüm sahneleme API'lerine uygundur.

İşlenen örnek üzerinden geliştirme yapmak için bir Roomagen API anahtarı alın: ilk anahtar 50 ücretsiz görsel içerir; ayrıca hızlı başlangıç kılavuzu, webhook kılavuzu ve hata referansı ayrıntıları ele alır. Böylece aynı iş döngüsü, tek bir entegrasyonun arkasında sanal sahneleme, gündüzden alacakaranlığa fotoğraf düzenleme & dönüştürme, fotoğraflardan AI nesne ve öğe kaldırma, fotoğraf geliştirme, sanal tadilat ve yenileme ve kat planından 3D'ye araçlarını da çalıştırır.

İlanlarınızı dönüştürmeye hazır mısınız?

Roomagen'in yapay zeka sanal ev düzenleme aracını ücretsiz deneyin. İlk fotoğrafınızı yükleyin; sonuç genellikle bir dakikadan kısa sürede hazır olur.

Ücretsiz Başla

Sıkça Sorulan Sorular

Sanal sahneleme API'si, bir oda fotoğrafını alıp AI ile döşenmiş versiyonunu döndüren bir web servisidir. Geliştiriciler; ilan portallarına, fotoğraf teslim araçlarına, mülk yönetim yazılımlarına, iç mekan tasarım uygulamalarına veya mobilya perakende sitelerine sahneleme eklemek için bu servisi kendi arka uçlarından çağırırlar.

Roomagen'in belgeleri işlerin genellikle 20 ila 60 saniyede hazır olduğunu ve sahnelemenin bu aralığın daha yavaş kısmında kaldığını belirtir. Bu süre bir isteği açık tutmak için çok uzun olduğundan, işi asenkron olarak gönderin ve sonucu webhook ile alın; alternatif olarak da her 2 ila 5 saniyede bir yoklama yapın.

Roomagen ön ödemeli paketler satar: 500 görsel $125 (tanesi $0,25), 2.500 görsel $550 ($0,22) ve 10.000 görsel $2.000 ($0,20); ayrıca ilk anahtar 50 ücretsiz görsel içerir. Diğer sağlayıcıların yayımlanan fiyatları büyük farklılıklar gösterir; örneğin ModelsLab'de render başına $0,02 ve AI HomeDesign'ın aylık faturalandırmasıyla fotoğraf başına yaklaşık $0,49.

Evet. İlk Roomagen API anahtarınızı oluşturmak, hesap başına bir defaya mahsus olmak üzere 50 ücretsiz görsel ekler; bu da eksiksiz bir entegrasyonu derlemek ve test etmek için yeterlidir; bir paket satın alana kadar üzerlerinde filigran bulunur. Doğrulanmış bir e-posta adresine ihtiyacınız vardır ve ek anahtarlar oluşturmak daha fazla ücretsiz görsel eklemez.

İkisini de kullanın. Webhook'lar sürekli isteklere gerek kalmadan tamamlanan işi teslim eder; ancak bir dağıtım veya kesinti sırasında teslimat kaçırılabilir ve Roomagen yaklaşık 36 dakika sonra yeniden denemeyi durdurur. Her iş için bir webhook kaydedin ve durum isteğiyle hâlâ işlenmekte olan her şeyi eşitleyin.

Roomagen'in API'si, herkese açık bir https image_url olarak veya satır içi image_base64 olarak gönderilen, 20 MB'a kadar JPEG, PNG veya WebP görsellerini kabul eder. Bir URL istekleri küçük tutar; base64 istek gövdeleri ise yalnızca X-Api-Key üstbilgisi mevcut olduğunda 30 MB'a ulaşabilir.

Roomagen'de tüketilmez. Üretim sırasında başarısız olan bir işin ücreti otomatik olarak iade edilir ve bir neden ile birlikte failed durumu gösterilir. Tamamlanan bir render, kullanıcınız beğenmese bile ücretlendirilir; bu nedenle yeniden çalıştırma, başka bir görsele mal olan yeni bir iştir.

Roomagen için, whsec_ imzalama gizli anahtarınızı kullanarak X-Roomagen-Timestamp değerinin, bir noktanın ve ham istek gövdesinin HMAC-SHA256'sını hesaplayın. Sabit zamanda "v1=" artı onaltılık özeti X-Roomagen-Signature üstbilgisi ile karşılaştırın ve yaklaşık beş dakikadan daha eski zaman damgalarını reddedin.

Çoğu zaman, evet. 1 Ocak 2026'dan bu yana California'nın AB 723 yasası, gayrimenkul lisans sahiplerinin dijital olarak değiştirilmiş görseller içeren satış ilanlarında değişikliğin belirtilmesini ve orijinaline bağlantı verilmesini zorunlu kılar; ayrıca MLS kuralları etiket yerleşimi konusunda farklılık gösterir. Roomagen'in API'si etiket eklemez, bu nedenle bildirim işlemini uygulamanız yönetmelidir.

Evet. Roomagen'in iş uç noktası; sanal sahneleme, sanal tadilat ve yenileme, görsel iyileştirme, gündüzden alacakaranlığa fotoğraf düzenleme & dönüştürme, fotoğraflardan AI nesne ve öğe kaldırma ile kat planından 3D'ye dahil olmak üzere kabul ettiği her aracı belgeler. Araç tanıtıcısını ve seçenekleri değiştirirsiniz; iş yönetimi, webhook'lar ve sonuç depolama ise aynı kalır.
Roomagen

Yazan

Roomagen Team

Roomagen ekibi, yapay zeka sanal düzenleme, emlak fotoğrafçılığı ve gayrimenkul pazarlama stratejileri hakkında derinlemesine rehberler hazırlar.

İlgili Makaleler

En İyi Sanal Sahneleme API'leri 2026: 10 Seçenek

En İyi Sanal Sahneleme API'leri 2026: 10 Seçenek

Ekim 2026'da kontrol edilen sağlayıcı sayfalarını kullanarak on sanal sahneleme API'sini görsel başına yayımlanan fiyat, ücretsiz denemeler, webhook'lar, white-label çıktı ve hata politikaları açısından karşılaştırdık. 500 ila 10.000 görsel arası aylık maliyet senaryolarını içerir.

Devamını oku
Sanal Sahneleme API Fiyatları 2026: Görsel Maliyeti

Sanal Sahneleme API Fiyatları 2026: Görsel Maliyeti

Sanal sahneleme API fiyatları günümüzde görsel başına $0,02 ile yaklaşık $0,53 arasında değişiyor. Sekiz sağlayıcının yayınlanan tarifelerini, bunların arkasındaki gizli maliyetleri ve ayda 500, 2.500 ile 10.000 görselin gerçekte ne kadara mal olduğunu karşılaştırıyoruz.

Devamını oku
AB 723 ve MLS: AI ile Düzenlenen İlan Fotoğrafı Uyumlu mu?

AB 723 ve MLS: AI ile Düzenlenen İlan Fotoğrafı Uyumlu mu?

California'nın AB 723 yasası, AI ile değiştirilen her ilan fotoğrafı için göze çarpan bir bildirim ve orijinaline giden bir yol gerektiriyor; CRMLS gibi MLS'ler ise bir etiket olsa dahi bazı düzenlemeleri reddediyor. Nelerin değiştirilmiş sayıldığı, kimin sorumlu olduğu, 2027'de kiralıklar için nelerin değiştiği ve 8 soruluk bir fotoğraf kontrol listesi burada.

Devamını oku
5 Gündüzden Alacakaranlığa Fotoğraf Düzenleme & Dönüştürme

5 Gündüzden Alacakaranlığa Fotoğraf Düzenleme & Dönüştürme

Gündüzden alacakaranlığa dönüştürme artık bir API çağrısıyla çalışıyor. Beş sağlayıcıyı fiyat, seçenekler ve teslimat açısından karşılaştırıyor; iş ve webhook entegrasyonunu adım adım inceliyor, kalite kontrol, toplu strateji ve bildirim konularını ele alıyoruz.

Devamını oku
Kat Planı ve Oda Ölçüm API'leri (2026 Fiyatları)

Kat Planı ve Oda Ölçüm API'leri (2026 Fiyatları)

Yalnızca CubiCasa ve Apple RoomPlan gibi tarama tabanlı araçlar alanın kendisini ölçer; tanıma API'leri çizimleri verilere dönüştürür ve Roomagen, ModelsLab ile Decor8 gibi üretken API'ler planlardan ve krokilerden yeni görseller oluşturur. Girdi, çıktı, fiyat ve doğruluk açısından karşılaştırmalarını burada bulabilirsiniz.

Devamını oku
Roomagen AI Sanal Sahneleme: 7 Adımda Çalışma Mantığı (2026)

Roomagen AI Sanal Sahneleme: 7 Adımda Çalışma Mantığı (2026)

Roomagen'de fotoğrafınıza ne olduğuna adım adım bir bakış: mekan analizi, Google'ın Gemini görsel modellerine gönderilen talimat, ölçülen hızlar, krediler ve iadeler ile hâlâ kontrol etmeniz ve bildirmeniz gerekenler.

Devamını oku