Guía · Migración
Migración de FASHN a Photta qué cambia, qué no
En una frase
Trasladar una integración de try-on a Photta implica una nueva clave bearer, un nuevo cuerpo de petición y una nueva ruta de estado. La estructura de la integración — enviar, polling, descargar, almacenar — no cambia.
- Tiempo típico: 1.5–4 min
- Credits: 5 credits a 2K · 6 credits a 4K
- Procesamiento: asíncrono, polling
Cada cifra de esta página proviene de la documentación de la API de Photta · verificado
La respuesta corta
Los equipos cambian de API de try-on por las razones habituales: los resultados encajan mejor con su catálogo, el precio por imagen rinde de forma diferente a su volumen o necesitan una funcionalidad que su proveedor actual no ofrece — maniquí invisible en lote, primeros planos de detalles, modelos generados reutilizados a lo largo de una temporada.
Tres cosas: la credencial, el cuerpo de la petición y la ruta de estado. Photta se autentica con una clave bearer en cada llamada, utiliza sus propios nombres de campo y reporta el estado del trabajo en un endpoint de estado específico por funcionalidad. Cada valor que envía tu código está documentado como un enum o un id que puedes consultar primero.
La arquitectura. Ambas son API asíncronas a las que envías y haces polling, por lo que tu cola, tu worker, tu política de reintentos y tu almacenamiento siguen funcionando. En la práctica, una migración consiste en un nuevo módulo de cliente y un nuevo conjunto de nombres de campo, no en un pipeline nuevo.
El endpoint al que vas a migrar
Leído de la documentación de la API de Photta, no escrito a mano.
De un vistazo
- Endpoint
- POST /api/v1/tryon/apparel
- Autenticación
- Bearer API key
- Procesamiento
- Asíncrono — realiza polling al endpoint de estado
- Tiempo típico
- 1.5–4 min
- Credits
- 5 credits a 2K · 6 credits a 4K
- Relaciones de aspecto
- 3:4 · 1:1 · 4:3 · 9:16 · 16:9
- Límites de entrada
- Hasta 10 MB por imagen; JPEG, PNG, WebP
- Idempotente
- No
Las cuatro cosas que realmente cambian
Autenticación
Una sola clave Bearer en cada endpoint, creada en tu panel de Photta. Sin scopes por endpoint y sin paso de intercambio de tokens.
El cuerpo de la petición
Photta acepta campos en snake_case con enums documentados, y los IDs para el modelo, la pose y el fondo que listas desde los endpoints de recursos y almacenas en caché.
Polling
Haz polling al endpoint de estado de la capability cada 3 segundos hasta que devuelva completed o failed. No hay webhooks, por lo que no es necesario exponer nada nuevo públicamente.
Cómo se te cobra
Créditos por llamada — 5 en 2K y 6 en 4K para try-on de ropa —, descontados cuando comienza el trabajo y reembolsados automáticamente si falla.
La nueva petición
La misma llamada en cURL, Node.js y 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"]Preguntas sobre la migración
¿Cuánto tiempo lleva una migración?
Es un único módulo de cliente: una nueva clave, nuevos nombres de campo, una nueva ruta de estado. Si tu worker ya envía peticiones y hace polling, el código circundante no cambia.
¿Tengo que cambiar mi cola?
No. Ambas API son asíncronas, por lo que cualquier cosa que uses hoy — Celery, BullMQ, Inngest, una tabla cron — mantiene su estructura. Solo cambian las llamadas dentro de la tarea.
¿Qué ocurre con las imágenes que ya generé?
Son archivos en tu propio almacenamiento y nada en ellos cambia. Migrar afecta a lo que renderices a continuación, no a lo que ya has publicado.
¿Cómo se comparan los precios?
La página de comparación contrasta el coste en credits por llamada de Photta con lo que FASHN publica en su propia página de precios, indicando la fecha en que se consultó cada cifra. Tu propio volumen determinará cuál te resulta más conveniente.
¿Puedo ejecutar ambos a la vez?
Sí, y es la forma más segura de hacer la transición. Envía una fracción de tu catálogo a través del nuevo endpoint, compara el resultado con productos reales y luego migra el resto.
Lecturas recomendadas
Capacidades
API de virtual try-on para ropa
API REST que viste maniquíes de IA con prendas. Generación asíncrona de 1.5–4 minutos, 5 créditos en 2K, 6 en 4K. Ejemplos en cURL, Node.js y Python.
LeerComparar
Photta frente a FASHN: API de IA de moda, frente a frente
Comparativa de Photta y FASHN: endpoints, precios de créditos, niveles de planes, límites de concurrencia. Obtenido directamente de la página de precios de cada empresa el 2026-04-19. Sin cifras inventadas.
LeerReferencia
Precios de la API de Photta
Cuánto cuesta en credits cada endpoint de Photta API a 2K y 4K, cómo funcionan los cobros y reembolsos, y qué endpoints son gratuitos. Sin precio monetario por imagen.
LeerReferencia
Rate limits de la API de Photta
El rate limit de la API de Photta, su ventana, la cabecera Retry-After, el intervalo de polling y los límites de concurrencia por plan, todo extraído directamente de la documentación de la API.
LeerGuía rápida
Tu primera imagen de Photta en menos de cinco minutos.
Regístrate, genera una API key, ejecuta tu primera llamada cURL, haz polling hasta que se complete y guarda el resultado. Cinco pasos, documentados de principio a fin.
Leer
Cada cifra de esta página proviene de la documentación de la API de Photta · verificado
Ejecuta ambos, luego cambia
Apunta una copia de tu cola al nuevo endpoint y compara la salida tú mismo.
- 1.5–4 min
- 5 credits a 2K · 6 credits a 4K
- asíncrono, polling