Wdróż · Automatyzacja no-code
Zautomatyzuj katalog bez pisania kodu
W jednym zdaniu
Przebieg no-code wysyła partię zdjęć produktów za pomocą jednego węzła HTTP, odczekuje 3 sekundy, odczytuje stan partii i powtarza operację aż do zakończenia, po czym zapisuje adresy URL z powrotem w arkuszu.
- Credits: 4 credits w 2K · 5 credits w 4K
- Typowy czas: 1.5–4 min per image
- Przetwarzanie: asynchroniczne, polling
Każda liczba na tej stronie pochodzi z dokumentacji API Photta · sprawdzono
Węzeł HTTP, węzeł oczekiwania i warunek. n8n, Make lub dowolne narzędzie obsługujące protokół HTTP może przetworzyć cały katalog za pośrednictwem endpointu wsadowego.
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"]Jak to działa
Arkusz kalkulacyjny na wejściu, folder ze zdjęciami na wyjściu
Wyeksportuj katalog, skonfiguruj jeden węzeł HTTP, zapętl sprawdzanie z oczekiwaniem, zapisz zwrócone adresy URL.
Krok 1
Wyeksportuj katalog
Jeden wiersz na jedno ubranie z publicznym adresem URL zdjęcia. Ta kolumna to jedyne dane wejściowe wymagane przez endpoint wsadowy.
Krok 2
Pobierz klucz API Photta
Zapisz go w magazynie danych uwierzytelniających swojego narzędzia do automatyzacji, a nie w ciele węzła, aby wyeksportowane przepływy pracy nie zawierały sekretów.
Krok 3
Skonfiguruj węzeł HTTP
POST, nagłówek z tokenem Bearer oraz treść JSON przedstawiona poniżej. Każdy element w tablicy to jedno ubranie; pola stylizacji dotyczą ich wszystkich.
Krok 4
Pętla z oczekiwaniem
Odczekaj 3 sekundy, pobierz stan partii, sprawdź, czy status to completed, i powtórz w razie potrzeby. Ten interwał jest zalecany w dokumentacji.
Krok 5
Przestrzegaj limitów
Limit wielkości partii oraz limit współbieżnych partii zależą od Twojego planu. Prześlij jedną partię, poczekaj na jej ukończenie, a następnie wyślij kolejną.
Krok 6
Zapisz adresy URL z powrotem
Po ukończeniu przetwarzania partii każdy element zawiera własny wyjściowy adres URL. Zapisz je w arkuszu i pobierz pliki w ramach tego samego przebiegu.
Węzły i ich zawartość
Treść żądania (body) pochodzi z przykładu w dokumentacji API; pętla korzysta z udokumentowanego interwału pollingu.
{
"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.Pytania zadawane przez programistów
Pytania o przepływy no-code
Czy muszę pisać kod?
Nie. Wszystko opiera się na żądaniu HTTP z treścią JSON, co obsługuje każde narzędzie do automatyzacji. Jedyny wprowadzany tekst to treść żądania pokazana na tej stronie.
Ile obrazów mieści się w jednym przebiegu?
Limit API dla partii wynosi 5 obrazów w planach Free i Hobby, 10 w Seller, 25 w Brand oraz 50 w Studio. Większe katalogi są przetwarzane jako seria kolejno wysyłanych partii.
Co się stanie, jeśli przetwarzanie jednego obrazu zakończy się błędem?
Przetwarzanie pozostałej części partii będzie kontynuowane. Treść odpowiedzi podaje, ile elementów zakończyło się powodzeniem (completed), a ile błędem (failed), a credits za nieudane elementy są zwracane.
Czy to może działać według harmonogramu?
Tak. Uruchamiaj przepływ pracy co noc, aby pobierał wiersze, które nie mają jeszcze wygenerowanego obrazu. Pętla pollingu działa identycznie niezależnie od tego, czy zadanie uruchomi człowiek, czy harmonogram.
Czy to działa w Make lub Zapier?
W każdym narzędziu, które pozwala wysłać żądanie HTTP z nagłówkiem i treścią JSON oraz odczekać określony czas między krokami. Zmieniają się jedynie nazwy węzłów; te trzy kroki pozostają bez zmian.
Powiązane strony
Powiązane materiały
Możliwości
API batch ghost mannequin dla całych katalogów
Prześlij wiele zdjęć odzieży w jednym żądaniu ghost mannequin. Identyfikatory dla poszczególnych elementów, zbiorcze odpytywanie i wstępna rezerwacja credits. 4 credits za obraz w 2K.
CzytajSzybki start
Pierwszy obraz z Photta w mniej niż pięć minut.
Zarejestruj się, wygeneruj klucz API, wykonaj pierwsze wywołanie cURL, odpytuj aż do ukończenia, zapisz wynik. Pięć kroków opisanych od początku do końca.
CzytajRate limits
CzytajPricing
Czytaj
Każda liczba na tej stronie pochodzi z dokumentacji API Photta · sprawdzono
Katalog bez udziału programisty
Jeden węzeł HTTP i oczekiwanie. Treść żądania na tej stronie odpowiada tej udostępnionej w dokumentacji.