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

Stagify.ai › Documentação da API

Stagify API

Painel da API

Decore uma foto imobiliária a partir do seu próprio código. Uma chamada HTTP devolve uma imagem decorada. Créditos pré-pagos a 0,15 $ por imagem, sem assinatura, sem mínimo e sem fatura que fuja ao controle.

URL base
https://stagify.ai/api/v1
Autenticação
Bearer stg_live_…
Tipo de conteúdo
multipart/form-data

Introdução

A API expõe uma única coisa: o pipeline de decoração por trás do aplicativo web. Você envia a foto de um cômodo, informa um tipo de ambiente e um estilo de mobiliário, e recebe a imagem decorada na mesma resposta. Não há fila de tarefas nem nada a consultar no caminho normal.

Créditos são imagens inteiras. Você os compra antecipadamente e cada renderização bem-sucedida gasta um. Uma renderização que falha é reembolsada automaticamente, então você só paga por uma foto que recebeu. E como o saldo é pré-pago, uma chave roubada custa no máximo o que restar nela. Não há fatura no fim do mês.

As chaves são para uso servidor a servidor. A API não envia cabeçalhos CORS, portanto um navegador não pode chamá-la diretamente; isso é proposital, e uma chave acessível pelo JavaScript do navegador é uma chave vazada. Mostramos a chave uma única vez, guardamos apenas um hash e revogamos imediatamente.

Início rápido

Crie uma chave na sua página de chaves de API, compre um pacote de créditos e envie uma foto. A resposta traz a imagem decorada como 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"

Uma renderização pode levar alguns minutos. Defina o tempo limite de leitura do seu cliente para 300 segundos e tente novamente com a mesma Idempotency-Key. É isso que garante que você nunca será cobrado duas vezes pela mesma foto.

Pacotes de créditos

Carregando preços…

Parâmetros da requisição

POST /api/v1/renders, enviado como multipart/form-data. Todos os valores aceitos abaixo também são servidos em JSON por GET /api/v1/options, que não exige chave de API, para que um cliente possa preencher seus próprios menus em vez de fixar esta tabela no código.

CampoTipoObservações
imagefileObrigatório. A foto do cômodo. JPEG, PNG ou WebP, até 25 MB. O que é verificado é o tipo MIME, não a extensão do arquivo.
roomTypeenum Bedroom, Living room, Dining room, Kitchen, Office, Bathroom, Outdoors, Dorm. Padrão Living room. Diferencia maiúsculas e espaços, e um valor não reconhecido não é rejeitado. Ele é escrito no prompt como texto livre, então Living Room não é Living room.
furnitureStyleenum standard, modern, midcentury, scandinavian, luxury, coastal, farmhouse, custom. Padrão standard, que é também no que um valor não reconhecido se transforma silenciosamente. custom usa o seu additionalPrompt no lugar do texto de estilo interno.
additionalPromptstringOrientações em texto livre para esta renderização.
removeFurniturebooleanEsvaziar o cômodo antes de decorá-lo. Envie true ou on; qualquer outra coisa, incluindo 1 e yes, vale falso.
keepFurniturestringTexto livre indicando o que manter, por ex. keep the dining table and the built-in shelves. Lido apenas quando removeFurniture está ativo. 500 caracteres.
furnitureImagefile[]Até 5 fotos de referência de mobiliário a imitar. Mesmos formatos e limite de tamanho de image.
labelVirtuallyStagedbooleanGrava o aviso “Virtually staged” na imagem final.
stampStyleenum dark, light, minimal, banner. Padrão dark. Não diferencia maiúsculas; um valor não reconhecido volta ao padrão.
stampScalenumber De 0.7 a 1.6, padrão 1. Valores fora do intervalo são limitados em vez de recusados.
stampLangenum O idioma do selo: english, spanish, french, german, chinese, korean, portuguese, russian, italian, japanese, dutch. Padrão english.
variationsintegerApenas 1 é aceito. Envie requisições simultâneas para obter mais.

Idempotência

Uma renderização mantém a conexão aberta por minutos, o que significa que a falha que realmente vai te atingir é um socket caído depois de o trabalho terminar: cobrado e sem nada em mãos. Envie um cabeçalho Idempotency-Key em cada requisição e tente novamente com o mesmo valor.

O que temos registradoO que uma nova tentativa faz
Uma requisição bem-sucedida, mesmos parâmetrosDevolve o resultado armazenado com X-Stagify-Replayed: true. Sem segunda cobrança.
Uma requisição ainda em andamento409 REQUEST_IN_FLIGHT. Aguarde e tente de novo.
Uma requisição abandonada no meio da renderizaçãoÉ reexecutada sobre a cobrança existente, até três tentativas.
A mesma chave com parâmetros diferentes422 IDEMPOTENCY_KEY_REUSED. Use uma chave nova.

Omitir o cabeçalho é permitido e significa nenhuma proteção contra repetição, que é o padrão honesto. Não derivamos uma chave a partir da sua foto: duas renderizações genuinamente distintas do mesmo cômodo colidiriam e quem chamasse em segundo receberia a imagem do primeiro.

Avisos de decoração virtual

Muitas regras da MLS e da NAR exigem que uma foto decorada virtualmente informe isso. labelVirtuallyStaged grava esse aviso nos pixels em vez de anexá-lo como metadado que uma ferramenta seguinte pode remover.

Se o aviso não puder ser aplicado, a imagem é retida em vez de entregue sem rótulo, a chamada responde 500 DISCLOSURE_STAMP_FAILED e seu crédito é reembolsado. Não há como desligar esse comportamento, nem um padrão por chave que o desative silenciosamente.

Erros

Toda falha responde { "error": "…", "code": "…" }. Ramifique pelo code, nunca pela mensagem. Mensagens mudam, códigos não.

StatusCódigoO que fazer
401API_KEY_MISSING / API_KEY_INVALID / API_KEY_REVOKEDVerifique o cabeçalho Authorization ou crie uma nova chave.
402INSUFFICIENT_CREDITSRecarregue. O corpo traz credits_remaining.
403ACCOUNT_SUSPENDEDFale com o suporte.
400VARIATIONS_UNSUPPORTEDEsta API renderiza uma imagem por requisição. Envie requisições simultâneas.
409REQUEST_IN_FLIGHTEssa chave de idempotência ainda está em execução. Aguarde e tente de novo.
409CONCURRENCY_LIMITRenderizações demais ao mesmo tempo. Tente de novo em alguns segundos.
422IDEMPOTENCY_KEY_REUSEDVocê reutilizou uma chave com parâmetros diferentes. Use uma nova.
422NO_IMAGE_GENERATEDO modelo não devolveu nada. Reembolsado; tente de novo ou use outra foto.
429RATE_LIMITEDReduza o ritmo e tente de novo.
500DISCLOSURE_STAMP_FAILEDO aviso não pôde ser aplicado, então a imagem foi retida. Reembolsado.
500RENDER_FAILEDReembolsado. Informe o ref se entrar em contato com o suporte.

Outros endpoints

  • GET /api/v1/options: os valores aceitos de cada enumeração acima. Não exige chave de API.
  • GET /api/v1/me: minha chave está funcionando? Devolve a conta e o saldo.
  • GET /api/v1/credits: saldo e totais acumulados.
  • GET /api/v1/renders/{id}: o status de uma renderização.

Cada resposta traz X-Stagify-Credits-Remaining, para você ver o saldo cair sem precisar consultá-lo.

Dúvidas, limites maiores ou fatura em vez de cartão: team@stagify.ai.