Guia · Migração
Migrando da FASHN para a Photta o que muda, o que não muda
Em uma frase
Mover uma integração de try-on para a Photta significa uma nova chave bearer, um novo corpo de requisição e um novo caminho de status. A estrutura da integração — enviar, fazer polling, baixar, armazenar — não muda.
- Tempo típico: 1.5–4 min
- Credits: 5 credits em 2K · 6 credits em 4K
- Processamento: assíncrono, polling
Todos os números nesta página vêm de a documentação da API da Photta · verificado
A resposta resumida
Equipes migram entre APIs de try-on pelos motivos habituais: o output se adapta melhor ao catálogo delas, o preço por imagem compensa mais no volume delas, ou elas precisam de um recurso que o fornecedor atual não disponibiliza — ghost mannequin em batch, close-ups de detalhes, modelos gerados reutilizados ao longo de uma temporada.
Três coisas: a credencial, o corpo da requisição e o caminho de status. A Photta autentica com uma chave bearer em cada chamada, utiliza seus próprios nomes de campos e reporta o estado do job em um endpoint de status específico para cada funcionalidade. Cada valor que seu código envia é documentado como um enum ou um id que você pode listar previamente.
A arquitetura. Ambas são APIs assíncronas para as quais você envia e faz polling, portanto sua fila, seu worker, sua política de repetição e seu armazenamento continuam funcionando. Na prática, uma migração é um novo módulo de cliente e um novo conjunto de nomes de campos, não um pipeline novo.
O endpoint para o qual você está migrando
Lido diretamente da documentação da API da Photta, não escrito manualmente.
Visão geral
- Endpoint
- POST /api/v1/tryon/apparel
- Autenticação
- API key Bearer
- Processamento
- Assíncrono — faça polling no endpoint de status
- Tempo típico
- 1.5–4 min
- Credits
- 5 credits em 2K · 6 credits em 4K
- Proporções de tela
- 3:4 · 1:1 · 4:3 · 9:16 · 16:9
- Limites de entrada
- Até 10 MB por imagem; JPEG, PNG, WebP
- Idempotente
- Não
As quatro coisas que realmente mudam
Autenticação
Uma chave bearer em cada endpoint, criada no seu dashboard do Photta. Sem escopos por endpoint e sem etapa de troca de token.
O corpo da requisição
O Photta aceita campos em snake_case com enums documentados, além de ids para o modelo, pose e fundo que você lista a partir dos endpoints de recursos e armazena em cache.
Polling
Faça polling no endpoint de status da funcionalidade a cada 3 segundos até que ele reporte completed ou failed. Não há webhooks, portanto nada novo precisa ser exposto publicamente.
Como você é cobrado
Créditos por chamada — 5 em 2K e 6 em 4K para try-on de roupas — deduzidos quando o job inicia e reembolsados automaticamente quando ele falha.
A nova requisição
A mesma chamada em cURL, Node.js e Python.
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')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.statusimport os, requests
res = requests.post(
"https://api.photta.app/api/v1/tryon/apparel",
headers={"Authorization": f"Bearer {os.environ['PHOTTA_API_KEY']}"},
json={
"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."
},
)
data = res.json()["data"] # data["id"], data["status"]Dúvidas sobre a migração
Quanto tempo leva uma migração?
É apenas um módulo de cliente: uma nova chave, novos nomes de campos, um novo caminho de status. Se o seu worker já envia e faz polling, o código ao redor não muda.
Preciso alterar minha fila?
Não. Ambas as APIs são assíncronas, portanto o que você usa hoje — Celery, BullMQ, Inngest, uma tabela cron — mantém sua estrutura. Apenas as chamadas dentro da task mudam.
O que acontece com as imagens que já gerei?
Elas são arquivos no seu próprio armazenamento e nada nelas muda. A migração afeta o que você renderiza a seguir, não o que você já publicou.
Como os preços se comparam?
A página de comparação confronta o custo em créditos por chamada do Photta com o que o FASHN publica em sua própria página de preços, com a data em que cada número foi coletado. O seu próprio volume define qual opção compensa mais.
Posso rodar ambos ao mesmo tempo?
Sim, e essa é a maneira mais segura de fazer a transição. Envie uma fração do seu catálogo pelo novo endpoint, compare o resultado em produtos reais e, depois, migre o restante.
Leia a seguir
Recursos
API de try-on virtual para roupas
API REST que veste roupas em manequins de IA. Assíncrona, geração em 1.5–4 minutos, 5 credits em 2K, 6 em 4K. Exemplos em cURL, Node.js e Python.
LerComparar
Photta vs FASHN — APIs de IA para moda, lado a lado
Photta e FASHN comparados: endpoints, preços em credits, planos, limites de concorrência. Dados obtidos da página de preços de cada empresa em 2026-04-19. Sem números inventados.
LerReferência
Preços da API Photta
Quanto custa em credits cada endpoint da Photta API em 2K e 4K, como funcionam as cobranças e reembolsos, e quais endpoints são gratuitos. Sem preço monetário por imagem.
LerReferência
Rate limits da API Photta
O rate limit da API Photta, sua janela, o header Retry-After, o intervalo de polling e os limites de simultaneidade por plano, tudo extraído da documentação da API.
LerInício rápido
Primeira imagem no Photta em menos de cinco minutos.
Cadastre-se, gere uma chave de API, execute sua primeira chamada cURL, faça polling até a conclusão, persista o resultado. Cinco etapas, documentadas de ponta a ponta.
Ler
Todos os números nesta página vêm de a documentação da API da Photta · verificado
Execute ambos, depois faça a transição
Aponte uma cópia da sua fila para o novo endpoint e compare o output você mesmo.
- 1.5–4 min
- 5 credits em 2K · 6 credits em 4K
- assíncrono, polling