Bygg · No-code-automatisering
Automatisera en katalog utan att skriva kod
I en mening
En no-code-körning skickar en batch med produktfoton via en HTTP-nod, väntar 3 sekunder, läser av batchstatusen och upprepar tills den är klar innan URL:erna skrivs tillbaka till ditt kalkylark.
- Credits: 4 credits vid 2K · 5 credits vid 4K
- Typisk tid: 1.5–4 min per image
- Bearbetning: asynkron, polling
Varje siffra på den här sidan kommer från Photter API-dokumentationen · kontrollerad
En HTTP-nod, en väntnod och ett villkor. n8n, Make eller vilket verktyg som helst som hanterar HTTP kan köra en hel katalog genom batch-endpointen.
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"]Hur det fungerar
Ett kalkylark in, en bildmapp ut
Exportera katalogen, konfigurera en HTTP-nod, loopa med väntelägen, skriv tillbaka URL:erna.
Steg 1
Exportera katalogen
En rad per plagg med en publik bild-URL. Den kolumnen är den enda indatan batch-endpointen behöver.
Steg 2
Hämta en Photta API-nyckel
Spara den i ditt automationsverktygs valv för inloggningsuppgifter, inte i nodens body, så att exporterade arbetsflöden inte innehåller några hemligheter.
Steg 3
Konfigurera HTTP-noden
POST, Bearer-headern och JSON-bodyn som visas här. Varje objekt i arrayen är ett plagg; stylingfälten gäller för alla.
Steg 4
Loopa med väntelägen
Vänta 3 sekunder, läs av batchen, kontrollera om statusen är färdig och kör ett varv till. Det intervallet är det som dokumentationen publicerar.
Steg 5
Respektera gränserna
Gränsen för batchstorlek och gränsen för samtidiga batcher styrs båda av din plan. Skicka en batch, slutför den och skicka sedan nästa.
Steg 6
Skriv tillbaka URL:erna
När batchen är klar har varje objekt en egen output-URL. Skriv in dem i kalkylarket och ladda ner filerna i samma körning.
Noderna, och vad de ska innehålla
Request-bodyn är exemplet som API-dokumentationen publicerar; loopen är det dokumenterade polling-intervallet.
{
"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.Vanliga utvecklarfrågor
Frågor om no-code-körningar
Måste jag skriva kod?
Nej. Allt här är en HTTP-request med en JSON-body, vilket alla automationsverktyg kan skicka. Den enda text du skriver in är bodyn som visas på den här sidan.
Hur många bilder ryms i en körning?
API:ets batchgräns är 5 bilder på Free och Hobby, 10 på Seller, 25 på Brand och 50 på Studio. Större kataloger körs som flera batcher efter varandra.
Vad händer om en bild misslyckas?
Resten av batchen fortsätter. Batchens body rapporterar hur många som lyckades och hur många som misslyckades, och credits för misslyckade objekt återbetalas.
Kan detta köras enligt ett schema?
Ja. Trigga arbetsflödet varje natt och låt det plocka upp de rader som ännu inte har någon bild. Polling-loopen är densamma oavsett om en människa eller ett schema startar den.
Fungerar detta i Make eller Zapier?
Överallt där du kan skicka en HTTP-request med en header och en JSON-body samt vänta mellan stegen. Nodnamnen varierar; de tre stegen är desamma.
Relaterade sidor
Relaterad läsning
Funktioner
API för batch-ghost-mannekäng för hela kataloger
Skicka in flera plaggfoton i en enda ghost mannequin-förfrågan. ID:n per objekt, samlad polling och reservering av credits i förväg. 4 credits per bild i 2K.
LäsSnabbstart
Första Photta-bilden på under fem minuter.
Skapa konto, generera en API-nyckel, kör ditt första cURL-anrop, polla tills det är klart, spara resultatet. Fem steg, dokumenterade från början till slut.
LäsRate limits
LäsPricing
Läs
Varje siffra på den här sidan kommer från Photter API-dokumentationen · kontrollerad
En katalog, utan en utvecklare
En HTTP-nod och en väntetid. Bodyn på den här sidan är den som dokumentationen publicerar.