Możliwość · Batch ghost mannequin
API batch ghost mannequin dla całych katalogów
W jednym zdaniu
Endpoint batch ghost mannequin platformy Photta przyjmuje tablicę zdjęć odzieży i zwraca identyfikator batcha oraz jeden identyfikator elementu na obraz. Credits dla całego batcha są rezerwowane z góry; odpytuj batch o stan zagregowany.
- Typowy czas: 1.5–4 min per image
- Credits: 4 credits w 2K · 5 credits w 4K
- Przetwarzanie: asynchroniczne, polling
- Limity: 600 requests/min
- Uwierzytelnianie: Klucz Bearer
Każda liczba na tej stronie pochodzi z dokumentacji API Photta · sprawdzono
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"]
W skrócie
W skrócie
- Endpoint
- POST /api/v1/ghost-mannequin/batch
- Uwierzytelnianie
- Klucz API Bearer
- Przetwarzanie
- Asynchroniczne — odpytuj endpoint statusu
- Typowy czas
- 1.5–4 min per image
- Credits
- 4 credits w 2K · 5 credits w 4K
- Proporcje obrazu
- 3:4 · 1:1 · 4:3 · 9:16 · 16:9
- Limity wejściowe
- Do 10 MB na obraz; JPEG, PNG, WebP
- Idempotentne
- Nie
Żądanie i odpowiedź
Żądanie
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"]202 Accepted / Completed
{
"data": {
"batch_id": "gmb_x7y8z9",
"status": "processing",
"total": 3,
"completed": 0,
"failed": 0,
"items": [
{
"id": "gm_p1q2r3",
"status": "processing"
},
{
"id": "gm_s4t5u6",
"status": "processing"
},
{
"id": "gm_v7w8x9",
"status": "processing"
}
],
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"credits_reserved": 12,
"created_at": "2026-04-10T16:05:00Z"
},
"request_id": "req_gmb001"
}{
"data": {
"batch_id": "gmb_x7y8z9",
"status": "completed",
"total": 3,
"completed": 3,
"failed": 0,
"processing": 0,
"credits_reserved": 12,
"credits_used": 12,
"credits_refunded": 0,
"items": [
{
"id": "gm_p1q2r3",
"status": "completed",
"output_url": "https://cdn.photta.app/generated/gm_p1q2r3.jpg",
"thumbnail_url": "https://cdn.photta.app/generated/gm_p1q2r3-thumb.jpg",
"credits_used": 4,
"completed_at": "2026-04-10T16:06:42Z",
"duration_ms": 102000
},
{
"id": "gm_s4t5u6",
"status": "completed",
"output_url": "https://cdn.photta.app/generated/gm_s4t5u6.jpg",
"thumbnail_url": "https://cdn.photta.app/generated/gm_s4t5u6-thumb.jpg",
"credits_used": 4,
"completed_at": "2026-04-10T16:08:18Z",
"duration_ms": 96000
},
{
"id": "gm_v7w8x9",
"status": "completed",
"output_url": "https://cdn.photta.app/generated/gm_v7w8x9.jpg",
"thumbnail_url": "https://cdn.photta.app/generated/gm_v7w8x9-thumb.jpg",
"credits_used": 4,
"completed_at": "2026-04-10T16:09:50Z",
"duration_ms": 92000
}
],
"created_at": "2026-04-10T16:05:00Z",
"completed_at": "2026-04-10T16:09:50Z"
},
"request_id": "req_gmbs002"
}Parametry żądania
product_imagesTyp: array[object]Wymagane
Array of image objects. Each object contains "image" (URL or base64), optional "back_image", and optional "image_side". API batch caps (5× the dashboard limit): Free/Hobby/Hobby v2 5, Seller/Starter 10, Brand/Pro 25, Studio/Premium 50.
angleTyp: string
Applied to all images. "side" reconstructs the side view from each front photo (plus back_image when provided) — see the single-generate endpoint for details.
= straight
Wartości:straightbacksidestyleTyp: string
Applied to all images.
= 3d
Wartości:3dflat_laybackground_colorTyp: string
Applied to all images.
= white
Wartości:whitegraybeigeblackresolutionTyp: string
Applied to all images. "2K" = 4 credits each. "4K" = 5 credits each. 4K is produced natively in a single generation per item — pick it upfront; the resolution cannot be changed after creation. Note: 4K cannot be combined with aspect_ratio 1:1 — that combination returns 400.
= 2K
Wartości:2K4Kaspect_ratioTyp: string
Applied to all images. Note: 1:1 is not available at 4K resolution — 1:1 combined with 4K returns 400.
= 3:4
Wartości:3:41:14:39:1616:9user_instructionTyp: string
Batch-level: one note applied to every item. Optional free-form string, max 400 characters (anything longer is silently truncated). A guarded steer for ambiguous rendering choices — e.g. "closed front", "cream interior lining", "buttoned up" — it never overrides the source garment, brand label, or structural reconstruction, and it is explicitly NOT a determinism/seed control.
brand_label_idTyp: string
Applied to all images. Brand label UUID returned by the Brand Labels API. API v1 request fields use snake_case; use brand_label_id.
Błędy
- 400
invalid_request_error - The request is malformed or contains invalid parameters.
- 401
authentication_error - The API key is missing, invalid, or expired.
- 402
insufficient_credits_error - Your account does not have enough credits.
- 404
not_found_error - The requested resource does not exist.
- 409
conflict_error - The request conflicts with current state — e.g. your concurrent-batch cap is reached.
- 429
rate_limit_error - Too many requests. Slow down and retry.Retry-After: 30
- 500
api_error - An internal server error occurred. Retry later.
Limity
- 600 żądań na minutę na klucz API (Stałe okno czasowe; limit jest taki sam w każdym planie)
- Odpowiedź 429 zawiera nagłówek Retry-After: 30 s
- Do 10 MB na obraz
- Formaty: JPEG, PNG, WebP
- Jednoczesne zadania wsadowe w zależności od planu: Free 1 · Hobby 2 · Seller 3 · Brand 4 · Studio 6
- Tylko polling — API nie wysyła webhooków.
Jedno żądanie, cały wieszak ubrań
Zbuduj tablicę, wyślij raz, odpytuj batch, pobierz każdy element.
Krok 1
Wygeneruj klucz API
Batch ghost mannequin używa tych samych danych uwierzytelniających i tego samego salda credits, co każda inna funkcja Photta.
Krok 2
Zbuduj tablicę obrazów
`product_images` przyjmuje jeden obiekt na ubranie: `image` oraz opcjonalne `back_image` i `image_side`. Limit batcha w API wynosi 5 obrazów w planach Free i Hobby, 10 w Seller, 25 w Brand i 50 w Studio.
Krok 3
Wyślij żądanie POST dla batcha
POST `/api/v1/ghost-mannequin/batch`. Parametry `angle`, `style`, `background_color`, `resolution` i `aspect_ratio` mają zastosowanie do każdego elementu, a `user_instruction` dodaje jedną notatkę do 400 znaków dla wszystkich z nich. Credits dla całego batcha są rezerwowane przed wyrenderowaniem pierwszego elementu.
Krok 4
Odpytuj batch
GET `/api/v1/ghost-mannequin/batch/:id` co 3 sekundy. Treść odpowiedzi zawiera `total`, `completed`, `failed` oraz podział na poszczególne elementy, dzięki czemu możesz rozpocząć pobieranie, zanim ostatnie ubranie zostanie przetworzone.
Krok 5
Pobierz każdy wynik
Każdy ukończony element zawiera własny `output_url`, `credits_used` oraz czas trwania. Elementy, które zakończą się niepowodzeniem, zwracają zarezerwowane credits, co jest raportowane w `credits_refunded`.
Ten sam endpoint w Node.js, Python i cURL
Node.js
API batch ghost mannequin w Node.js
Wywołaj aPI batch ghost mannequin od Photta z backendu Node.js za pomocą natywnego fetch. SDK nie jest wymagane: zapisz klucz, wyślij zadanie, odpytuj o wynik.
CzytajPython
API batch ghost mannequin w Pythonie
Wywołuj Photta aPI batch ghost mannequin w Pythonie za pomocą biblioteki requests. Trzydziestowierszowy wrapper, przyjazny dla async dzięki httpx, działa w Django, FastAPI i Celery.
CzytajcURL
API batch ghost mannequin z cURL
Wywołuj aPI batch ghost mannequin Photta bezpośrednio z powłoki za pomocą cURL. Wysyłaj, odpytuj, pobieraj — każdy fragment kodu współpracuje z jq w zautomatyzowanych potokach.
Czytaj
Pytania, które programiści zadają przed uruchomieniem batchy
Co daje endpoint batch?
Przyjmuje tablicę zdjęć odzieży w jednym żądaniu i przetwarza je w tle. Otrzymujesz identyfikator batcha dla widoku zagregowanego oraz identyfikator elementu dla każdego zdjęcia, zamiast śledzić dziesiątki osobnych zadań.
Ile obrazów mieści się w jednym batchu?
Limit batcha w API wynosi 5 obrazów w planach Free i Hobby, 10 w Seller, 25 w Brand i 50 w Studio — pięć razy więcej niż limit w panelu. Przesłanie batcha większego niż pozwala na to Twój plan zwraca kod 400.
Jak naliczane są credits za batch?
Cały batch jest rezerwowany z góry: liczba obrazów pomnożona przez cenę za pojedynczy obraz, 4 credits w 2K lub 5 w 4K. Jeśli saldo nie pokrywa rezerwacji, żądanie zwraca kod 402 i nic nie jest renderowane.
Co się dzieje, gdy jeden element zakończy się niepowodzeniem?
Reszta batcha jest kontynuowana. Treść odpowiedzi batcha raportuje `failed` obok `completed`, a zarezerwowane credits za nieudane elementy wracają w `credits_refunded`.
Ile batchy może działać jednocześnie?
Liczba współbieżnych, aktywnych batchy jest ograniczona planem: Free 1, Hobby 2, Seller 3, Brand 4 i Studio 6. Wysłanie żądania przekraczającego limit zwraca kod 409 — odpytuj aktywny batch do momentu jego zakończenia, a następnie ponów próbę.
Jak odpytywać batch?
Wysyłaj GET `/api/v1/ghost-mannequin/batch/:id` co 3 sekundy, aby uzyskać stan zagregowany, lub odpytuj dowolny pojedynczy element na standardowej ścieżce stanu ghost mannequin, gdy potrzebujesz szczegółów dotyczących konkretnego ubrania.
Powiązane możliwości
Możliwości
Ghost mannequin API do zdjęć produktowych typu hollow-man
Endpoint AI ghost mannequin. Usuń manekina ze zdjęcia odzieży i zachowaj detale wnętrza. 3D lub flat-lay, przetwarzanie wsadowe, 4 credits w 2K.
Zobacz endpointMożliwości
API wirtualnego try-on dla odzieży
REST API, które nakłada odzież na manekiny AI. Asynchroniczne, generowanie w 1.5–4 minuty, 5 credits przy 2K, 6 przy 4K. Przykłady dla cURL, Node.js i Python.
Zobacz endpointTwórz
Zautomatyzuj wycinanie manekina (ghost mannequin) w swoim katalogu
Przepis na nocną automatyzację katalogu: pobierz wczorajsze aktualizacje produktów, wyślij je wsadowo do API ghost-mannequin w Photta, odpytuj nadrzędny batch i zapisz wyniki w bazie danych.
Zobacz endpointPorównaj
Photta vs Pixazo — autorski pipeline czy agregator modeli
Porównanie Photta i Pixazo: autorski pipeline modowy kontra agregator wielu modeli. Endpointy, opóźnienia, darmowy pakiet i kompromisy architektoniczne. Źródło z 2026-04-19.
Zobacz endpointSzybki 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.
Zobacz endpointDokumentacja
Błędy Photta API
Pełna lista typów błędów Photta API wraz z ich kodami statusu, strukturą treści błędu oraz informacją, które niepowodzenia warto ponowić.
Zobacz endpointDokumentacja
Rate limity Photta API
Rate limit Photta API, jego okno, nagłówek Retry-After, interwał dla pollingu oraz limity współbieżności według planu — wszystko prosto z dokumentacji API.
Zobacz endpoint
Każda liczba na tej stronie pochodzi z dokumentacji API Photta · sprawdzono
Wypróbuj API w 5 minut
Wygeneruj klucz Photta API, wklej powyższy snippet cURL, a otrzymasz swoje pierwsze zdjęcie na modelu, zanim zaparzy się kawa.
- 1.5–4 min per image
- 4 credits w 2K · 5 credits w 4K
- asynchroniczne, polling
- 600 requests/min
- Klucz Bearer