Byg · No-code-automatisering

Automatisér et katalog uden at skrive kode

I én sætning

En no-code kørsel indsender et batch af produktfotos med én HTTP-node, venter 3 sekunder, aflæser batch-statussen og gentager, indtil den er færdig, før URL'erne skrives tilbage til dit regneark.

  • Credits: 4 credits ved 2K · 5 credits ved 4K
  • Typisk tid: 1.5–4 min per image
  • Behandling: async, polling

Hvert tal på denne side stammer fra Photta API-dokumentationen · tjekket

En HTTP-node, en vente-node og en betingelse. n8n, Make eller ethvert værktøj, der taler HTTP, kan køre et helt katalog gennem batch-endpointet.

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

Sådan virker det

Et regneark ind, en mappe med billeder ud

Eksportér kataloget, konfigurér én HTTP-node, loop med ventetider, skriv URL'erne tilbage.

  1. Trin 1

    Eksportér kataloget

    Én række pr. beklædningsgenstand med en offentlig billed-URL. Den kolonne er det eneste input, batch-endpointet behøver.

  2. Trin 2

    Hent en Photta API-nøgle

    Gem den i dit automatiseringsværktøjs credential vault, ikke i nodens body, så eksporterede workflows ikke indeholder hemmeligheder.

  3. Trin 3

    Konfigurér HTTP-noden

    POST, Bearer-headeren og JSON body'en vist her. Hvert element i arrayet er én beklædningsgenstand; stylingfelterne gælder for dem alle.

  4. Trin 4

    Loop med ventetider

    Vent 3 sekunder, aflæs batchet, tjek om statussen er færdig, og kør en omgang mere. Det interval er det, dokumentationen angiver.

  5. Trin 5

    Respektér grænserne

    Grænsen for batchstørrelse og grænsen for samtidige batches følger begge din plan. Indsend ét batch, gør det færdigt, og indsend derefter det næste.

  6. Trin 6

    Skriv URL'erne tilbage

    Når batchet er færdigt, har hvert element sin egen output_url. Skriv dem ind i arket, og download filerne i samme kørsel.

Noderne, og hvad de skal indeholde

Request body'en er eksemplet, som API-dokumentationen viser; loopet følger det dokumenterede polling-interval.

{
  "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.

Spørgsmål udviklere stiller

Spørgsmål om no-code kørsler

Behøver jeg at skrive kode?

Nej. Alt her er en HTTP-request med en JSON body, som ethvert automatiseringsværktøj kan sende. Den eneste tekst, du taster, er body'en vist på denne side.

Hvor mange billeder kan der være i én kørsel?

API'ets batch-grænse er 5 billeder på Free og Hobby, 10 på Seller, 25 på Brand og 50 på Studio. Længere kataloger køres som flere batches, ét efter ét.

Hvad sker der, hvis ét billede fejler?

Resten af batchet fortsætter. Batch body'en rapporterer, hvor mange der blev completed, og hvor mange der failed, og credits for mislykkede elementer refunderes.

Kan dette køre efter en tidsplan?

Ja. Trigger dit workflow hver nat, og lad det hente de rækker, der endnu ikke har noget billede. Polling-loopet er det samme, uanset om en person starter det, eller en tidsplan gør.

Fungerer dette i Make eller Zapier?

Alle steder, hvor du kan sende en HTTP-request med en header og en JSON body, og vente mellem trinene. Nodenavnene ændrer sig; de tre trin gør ikke.

Et katalog, uden en udvikler

Én HTTP-node og en ventetid. Body'en på denne side er den, dokumentationen viser.