Integración · Automatización sin código
Automatiza un catálogo sin escribir código
En una frase
Una ejecución no-code envía un lote de fotos de productos con un único nodo HTTP, espera 3 segundos, lee el estado del lote y repite el proceso hasta que se completa antes de reescribir las URLs en tu hoja de cálculo.
- Credits: 4 credits a 2K · 5 credits a 4K
- Tiempo típico: 1.5–4 min per image
- Procesamiento: asíncrono, polling
Cada cifra de esta página proviene de la documentación de la API de Photta · verificado
Un nodo HTTP, un nodo de espera y una condición. n8n, Make o cualquier herramienta que hable HTTP puede procesar un catálogo completo mediante el batch endpoint.
RESPONSE=$(curl -s -X POST https://api.photta.app/api/v1/ghost-mannequin/batch \
-H "Authorization: Bearer $PHOTTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"product_images": [
{
"image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/shirt-front.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/trousers-front.jpg",
"image_side": "front"
}
],
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, buttoned up",
"brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
}')
ID=$(echo "$RESPONSE" | jq -r '.data.id')const res = await fetch("https://api.photta.app/api/v1/ghost-mannequin/batch", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.PHOTTA_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({
"product_images": [
{
"image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/shirt-front.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/trousers-front.jpg",
"image_side": "front"
}
],
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, buttoned up",
"brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
}),
});
const { data } = await res.json(); // data.id, data.statusimport os, requests
res = requests.post(
"https://api.photta.app/api/v1/ghost-mannequin/batch",
headers={"Authorization": f"Bearer {os.environ['PHOTTA_API_KEY']}"},
json={
"product_images": [
{
"image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/shirt-front.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/trousers-front.jpg",
"image_side": "front"
}
],
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, buttoned up",
"brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
},
)
data = res.json()["data"] # data["id"], data["status"]Cómo funciona
Entra una hoja de cálculo, sale una carpeta de imágenes
Exporta el catálogo, configura un nodo HTTP, haz un bucle con esperas y reescribe las URLs.
Paso 1
Exporta el catálogo
Una fila por prenda con una URL de imagen pública. Esa columna es la única entrada que necesita el batch endpoint.
Paso 2
Obtén una clave de API de Photta
Guárdala en el gestor de credenciales de tu herramienta de automatización, no en el cuerpo del nodo, para que los flujos de trabajo exportados no expongan ningún secreto.
Paso 3
Configura el nodo HTTP
POST, el encabezado Bearer y el cuerpo JSON mostrado aquí. Cada elemento del array representa una prenda; los campos de estilo se aplican a todas ellas.
Paso 4
Bucle con esperas
Espera 3 segundos, consulta el lote, comprueba si el estado es completed y repite la iteración. Ese intervalo es el especificado en la documentación.
Paso 5
Respeta los límites
El límite de tamaño del lote y el límite de lotes concurrentes dependen de tu plan. Envía un lote, termínalo y luego envía el siguiente.
Paso 6
Reescribe las URLs
Cuando el lote se completa, cada elemento incluye su propia URL de salida. Escríbelas en la hoja y descarga los archivos en la misma ejecución.
Los nodos y qué poner en cada uno
El cuerpo de la solicitud es el ejemplo publicado en la documentación de la API; el bucle sigue el intervalo de polling documentado.
{
"product_images": [
{
"image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/shirt-front.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/trousers-front.jpg",
"image_side": "front"
}
],
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, buttoned up",
"brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
}RESPONSE=$(curl -s -X POST https://api.photta.app/api/v1/ghost-mannequin/batch \
-H "Authorization: Bearer $PHOTTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"product_images": [
{
"image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/shirt-front.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/trousers-front.jpg",
"image_side": "front"
}
],
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, buttoned up",
"brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
}')
ID=$(echo "$RESPONSE" | jq -r '.data.id'){
"nodes": [
{
"name": "Wait",
"type": "n8n-nodes-base.wait",
"parameters": {
"amount": 3,
"unit": "seconds"
}
},
{
"name": "Read batch",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"method": "GET",
"url": "https://api.photta.app/api/v1/ghost-mannequin/batch/{{ $json.data.batch_id }}"
}
},
{
"name": "Done?",
"type": "n8n-nodes-base.if",
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json.data.status }}",
"value2": "completed"
}
]
}
}
}
]
}# 600 requests per minute per key, fixed window.
# One batch submission plus one poll every 3 seconds is ~21 requests per minute
# per batch in flight, so the concurrency cap binds long before the rate limit.
# On a 429, wait the Retry-After seconds (30 by default) before the next node runs.Preguntas frecuentes de desarrolladores
Preguntas sobre ejecuciones no-code
¿Necesito escribir código?
No. Todo aquí es una solicitud HTTP con un cuerpo JSON, algo que cualquier herramienta de automatización puede enviar. El único texto que debes escribir es el cuerpo que se muestra en esta página.
¿Cuántas imágenes caben en una sola ejecución?
El límite de lote de la API es de 5 imágenes en Free y Hobby, 10 en Seller, 25 en Brand y 50 en Studio. Los catálogos más extensos se procesan en varios lotes, uno tras otro.
¿Qué ocurre si falla una imagen?
El resto del lote continúa. El cuerpo de respuesta del lote reporta cuántas se completaron y cuántas fallaron, y los credits de los elementos fallidos se reembolsan.
¿Se puede ejecutar de forma programada?
Sí. Activa el flujo de trabajo por la noche y deja que procese las filas que aún no tengan imagen. El bucle de polling es exactamente el mismo, ya lo inicie una persona o una tarea programada.
¿Funciona esto en Make o Zapier?
En cualquier lugar donde puedas enviar una solicitud HTTP con un encabezado y un cuerpo JSON, y añadir esperas entre pasos. Los nombres de los nodos varían; los tres pasos no.
Páginas relacionadas
Lecturas relacionadas
Capacidades
API de ghost mannequin por lotes para catálogos completos
Envía múltiples fotos de prendas en una sola petición de ghost mannequin. Identificadores por elemento, polling agregado y reserva previa de créditos. 4 créditos por imagen en 2K.
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.
LeerRate limits
LeerPricing
Leer
Cada cifra de esta página proviene de la documentación de la API de Photta · verificado
Un catálogo, sin necesidad de programadores
Un nodo HTTP y una espera. El cuerpo en esta página es el publicado en la documentación.