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')

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

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.