Construa · SaaS de Fotografia com IA

Crie um serviço de fotografia de produtos com IA

Em uma frase

Provisione uma chave de API da Photta por tenant (ou compartilhe uma se o volume for baixo), faça o fanout pelo catálogo de cada cliente em uma fila, chame /api/v1/tryon/apparel por produto, faça o polling dos IDs de geração em um worker pool, armazene os resultados no bucket do seu cliente e fature cada unidade faturável (credit ou imagem renderizada) com margem sobre o custo de credits da Photta.

  • Credits: 5 credits em 2K · 6 credits em 4K
  • Tempo típico: 1.5–4 min
  • Processamento: assíncrono, polling

Todos os números nesta página vêm de a documentação da API da Photta · verificado

Faça o fanout pelos catálogos dos seus clientes, despache jobs de try-on por produto, fature por credit. As mesmas primitivas que a Photta expõe para desenvolvedores individuais se combinam em um SaaS white-label — se você respeitar os limites.

RESPONSE=$(curl -s -X POST https://api.photta.app/api/v1/tryon/apparel \
  -H "Authorization: Bearer $PHOTTA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "product_type": "top",
  "product_images": [
    "https://cdn.yourstore.com/products/shirt-front.jpg"
  ],
  "product_back_image": "https://cdn.yourstore.com/products/shirt-back.jpg",
  "product_category": "t_shirt",
  "mannequin_id": "mnk_f3a9b1",
  "pose_id": "pose_c2d4e5",
  "background": "https://cdn.yourstore.com/backgrounds/studio-loft.jpg",
  "lock_background": true,
  "resolution": "2K",
  "aspect_ratio": "3:4",
  "body_size": "M",
  "expression": "neutral",
  "user_instruction": "Keep the collar pattern crisp and centered."
}')
ID=$(echo "$RESPONSE" | jq -r '.data.id')

Como funciona

De uma única chave a um serviço multi-tenant

Cinco decisões de arquitetura que você precisa tomar antes de escrever código de produção.

  1. Passo 1

    Defina o contrato do seu produto

    Decida o que seu cliente recebe por unidade de faturamento: uma imagem renderizada? Um lote? Um pool mensal de credits? Sua resposta direciona todo o resto — profundidade de fila, política de repetição, copy da página de preços.

  2. Passo 2

    Provisione chaves da Photta por tenant

    Pequena escala: uma chave compartilhada, rastreando o uso por tenant no seu banco de dados. Escala maior: uma chave da Photta por tenant, gerenciada pelo painel da Photta — atribuição mais clara, menor raio de impacto em caso de vazamento.

  3. Passo 3

    Faça o fanout por meio de uma fila

    Para cada produto no feed do cliente, enfileire um job de foto. Nunca envie de forma síncrona durante uma importação de CSV — você vai atingir o rate limit de 600 requisições por minuto e perder jobs com erros 429.

  4. Passo 4

    Margem sobre o preço do credit

    Cada renderização de vestuário em 4K custa 6 credits para você. Toda fatura que você enviar deve ser credits × sua margem. Registre o custo bruto de credits no seu ledger para que o financeiro possa conciliar a fatura da Photta com sua linha de receita.

  5. Passo 5

    Monitore a latência e a taxa de falha

    Rastreie o tempo de conclusão + a taxa de falha por tenant. Quando as fotos de um cliente demoram consistentemente mais de 4 minutos ou falham com frequência, quase sempre se trata de uma entrada incorreta (URL corrompida, product_type não suportado) — e não de um problema na Photta.

Três padrões de que você vai precisar

Fanout, despacho por tenant, ledger de faturamento — as peças estruturais de um SaaS de fotografia.

// For each product in the customer's feed, kick off a try-on.
for (const product of catalog) {
  await photoQueue.add("photo", {
    customerId: product.customer_id,
    productUrl: product.image,
    productType: product.type, // "top" | "bottom" | "top_and_bottom" | "one_piece"
  });
}
const res = await fetch("https://api.photta.app/api/v1/tryon/apparel", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.PHOTTA_API_KEY}`, "Content-Type": "application/json" },
  body: JSON.stringify({
    "product_type": "top",
    "product_images": [
      "https://cdn.yourstore.com/products/shirt-front.jpg"
    ],
    "product_back_image": "https://cdn.yourstore.com/products/shirt-back.jpg",
    "product_category": "t_shirt",
    "mannequin_id": "mnk_f3a9b1",
    "pose_id": "pose_c2d4e5",
    "background": "https://cdn.yourstore.com/backgrounds/studio-loft.jpg",
    "lock_background": true,
    "resolution": "2K",
    "aspect_ratio": "3:4",
    "body_size": "M",
    "expression": "neutral",
    "user_instruction": "Keep the collar pattern crisp and centered."
  }),
});
const { data } = await res.json(); // data.id, data.status
// A completed apparel job costs 5 credits at 2K and 6 at 4K.
// Record it to your billing pipeline so you can margin on top of it.
await billingLedger.append({
  customer: data.customerId,
  sku: "photo-4k",
  quantity: 1,
  wholesaleCost: 6, // credits, = your Photta spend
});

Dúvidas frequentes de desenvolvedores

Operando um serviço sobre a Photta

Preciso de uma chave de API da Photta separada por tenant?

Não, mas isso ajuda na escala. Abaixo de um punhado de clientes, uma chave compartilhada com rastreamento de uso por tenant no seu próprio banco de dados funciona bem. Acima disso, uma chave por tenant oferece uma atribuição mais limpa, rotação mais fácil e um raio de impacto menor quando algo vaza.

O que eu faço quando os credits acabarem?

A API retorna 402 insufficient_credits com as contagens de necessários e disponíveis. Defina um limite mínimo (ex.: 100 credits) e faça recargas automáticas antes que os jobs comecem a falhar. Jobs que falham estornam seus credits, portanto uma rajada de erros 402 não agrava o dano.

Como devo precificar meu serviço?

A Photta cobra 5 credits em 2K, 6 credits em 4K. Converta isso para sua moeda de varejo (custo × sua margem × conversão de credits) e decida se vai cobrar por imagem, por lote ou por mês. A maioria dos produtos SaaS de fotografia acaba cobrando por imagem com um mínimo mensal.

Quais SLAs a Photta oferece?

A janela de conclusão documentada da Photta é de 1.5 a 4 minutos por job. Não há SLA rígido de uptime publicado. Se o seu SaaS se comprometer com um prazo próprio, inclua essa margem no seu próprio contrato (ex.: "fotos entregues em 1 hora" dá uma folga de 10x) e monitore a latência por tenant para detectar regressões com antecedência.

Posso aplicar white-label no resultado?

Sim. As imagens retornadas não contêm a marca da Photta. Você pode entregá-las no bucket do seu cliente com seu próprio domínio de CDN à frente — seu cliente nunca precisa saber que o pipeline da Photta as produziu. A API em si não é white-label — a chave e o dashboard levam a marca da Photta.

Lance um SaaS de fotografia sobre a Photta

A mesma API, sua marca, sua margem. Obtenha uma chave de API, conecte os três padrões acima aos seus workers e você estará a meio caminho do lançamento.