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')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"]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.
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.
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.
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.
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.
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.
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.
Relaterede sider
Relateret læsning
Funktioner
Batch ghost mannequin-API til hele kataloger
Indsend mange tøjfotos i én ghost mannequin-anmodning. Id'er pr. element, samlet polling og forudgående credit-reservation. 4 credits pr. billede i 2K.
LæsHurtig start
Første Photta-billede på under fem minutter.
Opret en konto, generer en API-nøgle, kør dit første cURL-kald, foretag polling indtil det er fuldført, gem resultatet. Fem trin, dokumenteret fra start til slut.
LæsRate limits
LæsPricing
Læs
Hvert tal på denne side stammer fra Photta API-dokumentationen · tjekket
Et katalog, uden en udvikler
Én HTTP-node og en ventetid. Body'en på denne side er den, dokumentationen viser.