Build · Automação no-code

Automatize um catálogo sem escrever código

Em uma frase

Uma execução no-code envia um lote de fotos de produtos com um nó HTTP, aguarda 3 segundos, lê o status do lote e repete até a conclusão antes de gravar as URLs de volta na sua planilha.

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

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

Um nó HTTP, um nó de espera e uma condição. n8n, Make ou qualquer ferramenta compatível com HTTP pode processar um catálogo inteiro pelo endpoint de lote.

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

Como funciona

Uma planilha entra, uma pasta de imagens sai

Exporte o catálogo, configure um nó HTTP, faça um loop com esperas e grave as URLs de volta.

  1. Passo 1

    Exporte o catálogo

    Uma linha por peça de roupa com uma URL pública de imagem. Essa coluna é a única entrada que o endpoint de lote precisa.

  2. Passo 2

    Obtenha uma chave de API da Photta

    Armazene-a no cofre de credenciais da sua ferramenta de automação, não no corpo do nó, para que os fluxos de trabalho exportados não exponham nenhum segredo.

  3. Passo 3

    Configure o nó HTTP

    POST, o cabeçalho bearer e o corpo JSON mostrado aqui. Cada item no array é uma peça de roupa; os campos de estilo se aplicam a todos eles.

  4. Passo 4

    Faça um loop com esperas

    Aguarde 3 segundos, leia o lote, verifique se o status é de conclusão e repita o ciclo. Esse intervalo é o mesmo publicado na documentação.

  5. Passo 5

    Respeite os limites

    O limite de tamanho de lote e o limite de lotes simultâneos seguem o seu plano. Envie um lote, termine-o e envie o próximo.

  6. Passo 6

    Grave as URLs de volta

    Quando o lote é concluído, cada item traz sua própria URL de saída. Grave-as na planilha e baixe os arquivos na mesma execução.

Os nós e o que vai dentro deles

O corpo da requisição é o exemplo publicado na documentação da API; o loop segue o 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.

Dúvidas frequentes de desenvolvedores

Perguntas sobre execuções no-code

Preciso escrever código?

Não. Tudo aqui é uma requisição HTTP com corpo JSON, que qualquer ferramenta de automação consegue enviar. O único texto que você digita é o corpo mostrado nesta página.

Quantas imagens cabem em uma execução?

O limite de lote da API é de 5 imagens nos planos Free e Hobby, 10 no Seller, 25 no Brand e 50 no Studio. Catálogos mais longos rodam como múltiplos lotes, um após o outro.

O que acontece se uma imagem falhar?

O restante do lote continua. O corpo da resposta do lote informa quantos foram concluídos e quantos falharam, e os credits dos itens que falharam são reembolsados.

Isso pode rodar em um agendamento?

Sim. Dispare o fluxo de trabalho toda noite e deixe-o capturar as linhas que ainda não possuem imagem. O loop de polling é o mesmo, seja iniciado manualmente ou por um agendamento.

Isso funciona no Make ou no Zapier?

Em qualquer lugar onde você possa enviar uma requisição HTTP com um cabeçalho e um corpo JSON, e aguardar entre as etapas. Os nomes dos nós mudam; as três etapas continuam as mesmas.

Um catálogo, sem precisar de desenvolvedor

Um nó HTTP e uma espera. O corpo nesta página é o publicado na documentação.