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

Stagify.ai › API-documentatie

Stagify API

API-dashboard

Style een vastgoedfoto vanuit je eigen code. Eén HTTP-aanroep levert één ingerichte afbeelding op. Vooraf betaalde credits van $ 0,15 per afbeelding, zonder abonnement, zonder minimum en zonder rekening die uit de hand loopt.

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

Inleiding

De API stelt één ding beschikbaar: de stagingpijplijn achter de webapp. Je stuurt een foto van een kamer, geeft een kamertype en een meubelstijl op, en krijgt de ingerichte afbeelding in dezelfde reactie terug. Er is geen taakwachtrij en op het normale pad valt niets te pollen.

Credits zijn hele afbeeldingen. Je koopt ze vooraf en elke geslaagde render verbruikt er één. Een mislukte render wordt automatisch terugbetaald, dus je betaalt alleen voor een foto die je hebt ontvangen. En omdat het saldo vooraf betaald is, kost een gestolen sleutel je hooguit wat er nog op staat. Geen rekening aan het eind van de maand.

Sleutels zijn bedoeld voor server-naar-servergebruik. De API stuurt geen CORS-headers, dus een browser kan haar niet rechtstreeks aanroepen; dat is bewust, en een sleutel die bereikbaar is vanuit browser-JavaScript is een gelekte sleutel. We tonen een sleutel één keer, bewaren alleen een hash en trekken hem direct in.

Snel starten

Maak een sleutel aan op je API-sleutelpagina, koop een creditpakket en stuur een foto. De reactie bevat de ingerichte afbeelding 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"

Een render duurt tot een paar minuten. Zet de leestime-out van je client op 300 seconden en probeer opnieuw met dezelfde Idempotency-Key. Dat is wat garandeert dat je nooit twee keer voor één foto betaalt.

Creditpakketten

Prijzen laden…

Aanvraagparameters

POST /api/v1/renders, verstuurd als multipart/form-data. Elke toegestane waarde hieronder wordt ook als JSON geleverd door GET /api/v1/options, waarvoor geen API-sleutel nodig is, zodat een client zijn eigen keuzelijsten kan vullen in plaats van deze tabel hard te coderen.

VeldTypeToelichting
imagefileVerplicht. De foto van de kamer. JPEG, PNG of WebP, tot 25 MB. Het MIME-type wordt gecontroleerd, niet de bestandsextensie.
roomTypeenum Bedroom, Living room, Dining room, Kitchen, Office, Bathroom, Outdoors, Dorm. Standaard Living room. Hoofdletter- en spatiegevoelig, en een onbekende waarde wordt niet geweigerd. Ze wordt als vrije tekst in de prompt geschreven, dus Living Room is niet Living room.
furnitureStyleenum standard, modern, midcentury, scandinavian, luxury, coastal, farmhouse, custom. Standaard standard, wat een onbekende waarde ook stilzwijgend wordt. custom gebruikt je additionalPrompt in plaats van de ingebouwde stijltekst.
additionalPromptstringVrije tekst met aanwijzingen voor deze render.
removeFurniturebooleanDe kamer leegmaken voordat hij wordt ingericht. Stuur true of on; al het andere, ook 1 en yes, geldt als onwaar.
keepFurniturestringVrije tekst die benoemt wat moet blijven staan, bijv. keep the dining table and the built-in shelves. Wordt alleen gelezen als removeFurniture aanstaat. 500 tekens.
furnitureImagefile[]Maximaal 5 referentiefoto’s van meubels om na te bootsen. Zelfde formaten en groottelimiet als image.
labelVirtuallyStagedbooleanBrandt de vermelding “Virtually staged” in het resultaat.
stampStyleenum dark, light, minimal, banner. Standaard dark. Niet hoofdlettergevoelig; een onbekende waarde valt terug op de standaard.
stampScalenumber 0.7 tot 1.6, standaard 1. Waarden buiten het bereik worden begrensd in plaats van geweigerd.
stampLangenum De taal van het label: english, spanish, french, german, chinese, korean, portuguese, russian, italian, japanese, dutch. Standaard english.
variationsintegerAlleen 1 wordt geaccepteerd. Stuur gelijktijdige aanvragen voor meer.

Idempotentie

Een render houdt de verbinding minutenlang open, wat betekent dat de storing die je echt raakt een afgebroken socket is nadat het werk al klaar was: betaald en met lege handen. Stuur bij elke aanvraag een Idempotency-Key-header en probeer opnieuw met dezelfde waarde.

Wat wij geregistreerd hebbenWat een nieuwe poging doet
Een geslaagde aanvraag, zelfde parametersGeeft het opgeslagen resultaat terug met X-Stagify-Replayed: true. Geen tweede afschrijving.
Een aanvraag die nog loopt409 REQUEST_IN_FLIGHT. Wacht en probeer opnieuw.
Een aanvraag die halverwege is afgebrokenLoopt opnieuw op de bestaande afschrijving, tot drie pogingen.
Dezelfde sleutel met andere parameters422 IDEMPOTENCY_KEY_REUSED. Gebruik een nieuwe sleutel.

De header weglaten mag en betekent geen replaybeveiliging, wat de eerlijke standaard is. We leiden geen sleutel af uit je foto: twee werkelijk losstaande renders van dezelfde kamer zouden botsen en de tweede aanroeper zou de afbeelding van de eerste krijgen.

Vermelding van virtuele styling

Veel MLS- en NAR-regels eisen dat een virtueel ingerichte foto dat vermeldt. labelVirtuallyStaged brandt die vermelding in de pixels in plaats van haar mee te sturen als metadata die een volgend hulpmiddel kan verwijderen.

Kan de vermelding niet worden aangebracht, dan wordt de afbeelding ingehouden in plaats van ongelabeld geleverd, antwoordt de aanroep 500 DISCLOSURE_STAMP_FAILED en wordt je credit terugbetaald. Dat gedrag is niet uit te schakelen, en er is geen standaard per sleutel die het stilletjes uitzet.

Fouten

Elke fout antwoordt met { "error": "…", "code": "…" }. Vertak op code, nooit op de melding. Meldingen veranderen, codes niet.

StatusCodeWat te doen
401API_KEY_MISSING / API_KEY_INVALID / API_KEY_REVOKEDControleer de Authorization-header, of maak een nieuwe sleutel aan.
402INSUFFICIENT_CREDITSVul aan. De body bevat credits_remaining.
403ACCOUNT_SUSPENDEDNeem contact op met support.
400VARIATIONS_UNSUPPORTEDDeze API rendert één afbeelding per aanvraag. Stuur in plaats daarvan gelijktijdige aanvragen.
409REQUEST_IN_FLIGHTDie idempotentiesleutel loopt nog. Wacht en probeer opnieuw.
409CONCURRENCY_LIMITTe veel renders tegelijk. Probeer het over enkele seconden opnieuw.
422IDEMPOTENCY_KEY_REUSEDJe hebt een sleutel hergebruikt met andere parameters. Gebruik een nieuwe.
422NO_IMAGE_GENERATEDHet model gaf niets terug. Terugbetaald; probeer opnieuw of neem een andere foto.
429RATE_LIMITEDRustiger aan en probeer opnieuw.
500DISCLOSURE_STAMP_FAILEDDe vermelding kon niet worden aangebracht, dus de afbeelding is ingehouden. Terugbetaald.
500RENDER_FAILEDTerugbetaald. Noem de ref als je contact opneemt met support.

Overige endpoints

  • GET /api/v1/options: de toegestane waarden van elke opsomming hierboven. Geen API-sleutel nodig.
  • GET /api/v1/me: werkt mijn sleutel? Geeft account en saldo terug.
  • GET /api/v1/credits: saldo en totalen.
  • GET /api/v1/renders/{id}: de status van één render.

Elke reactie bevat X-Stagify-Credits-Remaining, zodat je het saldo ziet dalen zonder ernaar te vragen.

Vragen, hogere limieten of een factuur in plaats van een kaart: team@stagify.ai.