• English
  • Deutsch
  • Nederlands
  • Español
  • Français
  • Italiano
  • Português
  • Русский
  • 中文
  • 日本語
  • 한국어

Stagify.ai › API-Dokumentation

Stagify API

API-Dashboard

Inszenieren Sie ein Immobilienfoto aus Ihrem eigenen Code. Ein HTTP-Aufruf liefert ein möbliertes Bild zurück. Guthaben im Voraus zu 0,15 $ pro Bild, ohne Abo, ohne Mindestmenge und ohne Rechnung, die aus dem Ruder läuft.

Basis-URL
https://stagify.ai/api/v1
Authentifizierung
Bearer stg_live_…
Inhaltstyp
multipart/form-data

Einführung

Die API stellt genau eine Sache bereit: die Staging-Pipeline hinter der Web-App. Sie senden ein Foto eines Raums, nennen einen Raumtyp und einen Möbelstil und erhalten das möblierte Bild in derselben Antwort. Es gibt keine Job-Warteschlange und auf dem normalen Weg nichts abzufragen.

Guthaben sind ganze Bilder. Sie kaufen sie im Voraus, und jedes erfolgreiche Rendering verbraucht eines. Ein fehlgeschlagenes Rendering wird automatisch erstattet, Sie zahlen also nur für ein Foto, das Sie erhalten haben. Und da das Guthaben vorausbezahlt ist, kostet ein gestohlener Schlüssel Sie höchstens das, was noch darauf ist. Keine Rechnung am Monatsende.

Schlüssel sind für die Server-zu-Server-Nutzung gedacht. Die API sendet keine CORS-Header, ein Browser kann sie also nicht direkt aufrufen; das ist Absicht, und ein aus Browser-JavaScript erreichbarer Schlüssel ist ein geleakter Schlüssel. Wir zeigen einen Schlüssel einmal, speichern nur einen Hash und widerrufen sofort.

Schnellstart

Erstellen Sie einen Schlüssel auf Ihrer API-Schlüssel-Seite, kaufen Sie ein Guthabenpaket und senden Sie ein Foto. Die Antwort enthält das möblierte Bild als Data-URL.

curl https://stagify.ai/api/v1/renders \
  -H "Authorization: Bearer $STAGIFY_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -F "image=@living-room.jpg" \
  -F "roomType=Living room" \
  -F "furnitureStyle=modern" \
  -F "labelVirtuallyStaged=true"

Ein Rendering dauert bis zu ein paar Minuten. Stellen Sie das Lese-Timeout Ihres Clients auf 300 Sekunden und wiederholen Sie mit demselben Idempotency-Key. Genau das garantiert, dass Ihnen ein Foto nie zweimal berechnet wird.

Guthabenpakete

Preise werden geladen…

Anfrageparameter

POST /api/v1/renders, gesendet als multipart/form-data. Alle unten aufgeführten zulässigen Werte werden auch als JSON von GET /api/v1/options ausgeliefert, das keinen API-Schlüssel benötigt, ein Client kann damit eigene Auswahllisten füllen, statt diese Tabelle fest zu verdrahten.

FeldTypHinweise
imagefileErforderlich. Das Foto des Raums. JPEG, PNG oder WebP, bis 25 MB. Geprüft wird der MIME-Typ, nicht die Dateiendung.
roomTypeenum Bedroom, Living room, Dining room, Kitchen, Office, Bathroom, Outdoors, Dorm. Standard Living room. Groß-/Kleinschreibung und Leerzeichen zählen, und ein unbekannter Wert wird nicht abgelehnt. Er wird als freier Text in den Prompt geschrieben, Living Room ist also nicht Living room.
furnitureStyleenum standard, modern, midcentury, scandinavian, luxury, coastal, farmhouse, custom. Standard standard, wozu ein unbekannter Wert auch stillschweigend wird. custom verwendet Ihren additionalPrompt anstelle des eingebauten Stiltexts.
additionalPromptstringFreitext-Vorgaben für dieses Rendering.
removeFurniturebooleanDen Raum vor dem Staging leeren. Senden Sie true oder on; alles andere, auch 1 und yes, gilt als falsch.
keepFurniturestringFreitext, der benennt, was stehen bleiben soll, z. B. keep the dining table and the built-in shelves. Wird nur gelesen, wenn removeFurniture gesetzt ist. 500 Zeichen.
furnitureImagefile[]Bis zu 5 Referenzfotos von Möbeln, denen nachempfunden werden soll. Gleiche Formate und Größenbeschränkung wie image.
labelVirtuallyStagedbooleanBrennt den Hinweis „Virtually staged“ in das Ergebnisbild.
stampStyleenum dark, light, minimal, banner. Standard dark. Groß-/Kleinschreibung egal; ein unbekannter Wert fällt auf den Standard zurück.
stampScalenumber 0.7 bis 1.6, Standard 1. Werte außerhalb des Bereichs werden begrenzt statt abgelehnt.
stampLangenum Die Sprache des Hinweises: english, spanish, french, german, chinese, korean, portuguese, russian, italian, japanese, dutch. Standard english.
variationsintegerNur 1 wird akzeptiert. Für mehr senden Sie parallele Anfragen.

Idempotenz

Ein Rendering hält die Verbindung minutenlang offen. Der Fehler, der Sie wirklich trifft, ist deshalb ein abgebrochener Socket, nachdem die Arbeit fertig war: bezahlt und ohne Ergebnis. Senden Sie bei jeder Anfrage einen Idempotency-Key-Header und wiederholen Sie mit demselben Wert.

Was bei uns gespeichert istWas ein erneuter Versuch bewirkt
Eine erfolgreiche Anfrage, gleiche ParameterLiefert das gespeicherte Ergebnis mit X-Stagify-Replayed: true. Keine zweite Abbuchung.
Eine noch laufende Anfrage409 REQUEST_IN_FLIGHT. Warten, dann erneut versuchen.
Eine mitten im Rendering abgebrochene AnfrageLäuft auf der bestehenden Abbuchung erneut, bis zu drei Versuche.
Derselbe Schlüssel mit anderen Parametern422 IDEMPOTENCY_KEY_REUSED. Nehmen Sie einen neuen Schlüssel.

Den Header wegzulassen ist erlaubt und bedeutet keinen Wiederholungsschutz, das ist der ehrliche Standard. Wir leiten keinen Schlüssel aus Ihrem Foto ab: zwei wirklich getrennte Renderings desselben Raums würden kollidieren, und der zweite Aufrufer bekäme das Bild des ersten.

Kennzeichnungshinweise

Viele MLS- und NAR-Regeln verlangen, dass ein virtuell möbliertes Foto dies auch angibt. labelVirtuallyStaged brennt diesen Hinweis in die Pixel, statt ihn als Metadatum anzuhängen, das ein nachgelagertes Werkzeug entfernen kann.

Kann der Hinweis nicht angebracht werden, wird das Bild zurückgehalten statt unmarkiert ausgeliefert, der Aufruf antwortet 500 DISCLOSURE_STAMP_FAILED und Ihr Guthaben wird erstattet. Dieses Verhalten lässt sich nicht abschalten, und es gibt keinen Standard pro Schlüssel, der es still deaktiviert.

Fehler

Jeder Fehlschlag antwortet mit { "error": "…", "code": "…" }. Verzweigen Sie über code, nie über die Meldung. Meldungen ändern sich, Codes nicht.

StatusCodeWas zu tun ist
401API_KEY_MISSING / API_KEY_INVALID / API_KEY_REVOKEDPrüfen Sie den Authorization-Header oder erstellen Sie einen neuen Schlüssel.
402INSUFFICIENT_CREDITSGuthaben aufladen. Der Body enthält credits_remaining.
403ACCOUNT_SUSPENDEDWenden Sie sich an den Support.
400VARIATIONS_UNSUPPORTEDDiese API rendert ein Bild pro Anfrage. Senden Sie stattdessen parallele Anfragen.
409REQUEST_IN_FLIGHTDieser Idempotenzschlüssel läuft noch. Warten, dann erneut versuchen.
409CONCURRENCY_LIMITZu viele Renderings gleichzeitig. In ein paar Sekunden erneut versuchen.
422IDEMPOTENCY_KEY_REUSEDSie haben einen Schlüssel mit anderen Parametern wiederverwendet. Nehmen Sie einen neuen.
422NO_IMAGE_GENERATEDDas Modell hat nichts geliefert. Erstattet; erneut versuchen oder ein anderes Foto nehmen.
429RATE_LIMITEDDrosseln und erneut versuchen.
500DISCLOSURE_STAMP_FAILEDDer Hinweis konnte nicht angebracht werden, das Bild wurde zurückgehalten. Erstattet.
500RENDER_FAILEDErstattet. Nennen Sie die ref, wenn Sie den Support kontaktieren.

Weitere Endpunkte

  • GET /api/v1/options: die zulässigen Werte jeder Aufzählung oben. Kein API-Schlüssel nötig.
  • GET /api/v1/me: funktioniert mein Schlüssel? Liefert Konto und Guthaben.
  • GET /api/v1/credits: Guthaben und Gesamtsummen.
  • GET /api/v1/renders/{id}: der Status eines Renderings.

Jede Antwort trägt X-Stagify-Credits-Remaining, sodass Sie das Guthaben sinken sehen, ohne es abzufragen.

Fragen, höhere Limits oder eine Rechnung statt Karte: team@stagify.ai.